簡體   English   中英

逐行處理鑲木地板文件

[英]Process parquet file row-wise

我有一個大規模的分布式系統,它每天下載很多 large.csv 文件並索引數據。 可以說,我們的文件(file.csv)是: col1 col2 col3 user11 val12 val13 user21 val22 val23

然后我們逐行讀取該文件並存儲該文件中 user11 或 user12 的行所在位置的字節偏移量。 例如:索引表 - user11 -> 1120-2130(字節偏移) user12 -> 2130-3545(字節偏移)

當有人說刪除user11的數據時,我們參考這張表,下載並打開文件,刪除文件中的字節偏移量。 請注意,這個字節偏移量是整行的。

如何設計系統來處理鑲木地板文件? Parquet 文件按列操作。 要獲得一整行的 10 列,我需要打 10 次電話嗎? 然后,形成一整行,計算字節,然后將它們存儲在表中? 然后,在刪除時,我將不得不再次形成行然后刪除字節?

其他選項是存儲每列的字節偏移量並按列處理,但這會炸毀索引表。

如何以行方式有效地處理鑲木地板文件? 當前系統是 C# 中的后台作業。

使用Cinchoo ETL ,一個開源庫,可以輕松地將 CSV 轉換為 parquet 文件。

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

免責聲明:我是這個圖書館的作者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM