逐行处理镶木地板文件



我有一个大规模的分布式系统,它每天下载大量的.csv文件并对数据进行索引。比方说,我们的文件(file.csv(是:col1 col2 col3user11 val12 val13user21 val22 val23

然后,我们逐行读取该文件,并存储user11或user12所在行在该文件中的字节偏移量。例如:索引表-user11->1120-2130(字节偏移(user12->2130-3545(字节偏移(

当有人说,删除user11的数据时,我们参考这个表,下载并打开文件,删除文件中的字节偏移量。请注意,这个字节偏移量是整行的。

如何设计处理镶木地板文件的系统?Parquet文件按列操作。要得到一整行,比如说10列,我必须打10个电话吗?然后,形成一整行,计算字节,然后将它们存储在表中?然后,在删除时,我将不得不再次形成行,然后删除字节?

另一种选择是存储每列的字节偏移量并逐列处理,但这会破坏索引表。

如何以逐行方式高效处理镶木地板文件?当前系统是C#中的后台作业。

使用Cinchoo ETL,一个开源库,可以轻松地将CSV转换为拼花文件。

string csv = @"Id,Name
1,Tom
2,Carl
3,Mark";
using (var r = ChoCSVReader.LoadText(csv)
.WithFirstLineHeader()
)
{
using (var w = new ChoParquetWriter("*** PARQUET FILE PATH ***"))
w.Write(r);
}

欲了解更多信息,请查看https://www.codeproject.com/Articles/5270332/Cinchoo-ETL-Parquet-Reader文章

样品小提琴:https://dotnetfiddle.net/Ra8yf4

免责声明:我是这个图书馆的作者。

相关内容

最新更新