我是c#新手,我们需要从csv生成拼花文件。我们的文件大小高达30gb,所以在生成时性能是重要的。
我没有从谷歌得到任何帮助/建议来处理。
可以有人建议或分享解决方案请(控制台/脚本任务)。
你可以使用这个NuGet包,它包括从c#类到parquet文件的自动序列化/反序列化器,它通过动态生成MSIL(字节码)来工作,因此非常快。
我还没有尝试过,但可以通过CLI工具来做,只需从c#调用这些工具,即"shell out"。
- https://github.com/domoritz/arrow-tools
这个问题至少有三种不同的解决方案。
可以将CSV文件读入IEnumerable<Dto>
,并使用Parquet.Net
或ParquetSharp
写入parquet文件。
第三个解决方案是使用DuckDB.Net
编写一个SQL语句,将CSV直接读入Parquet文件。
COPY (
SELECT *
FROM read_csv('flights.csv', delim='|', header=True, columns={'FlightDate': 'DATE', 'UniqueCarrier': 'VARCHAR', 'OriginCityName': 'VARCHAR', 'DestCityName': 'VARCHAR'})
) TO 'test.parquet' (FORMAT 'parquet', COMPRESSION 'ZSTD', ROW_GROUP_SIZE 100000)
使用DuckDb.Net
ADO.NET
连接器
免责声明:我是DuckDB.Net
项目的贡献者。