[英]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.