我有一个实木复合地板文件,并且试图将其转换为CSV文件,似乎大多数建议使用Spark,但是我需要使用C#来完成此任务,特别是我需要使用.NET Core 3.0。
这很棘手,因为镶木地板是柱状数据,这使得转换为CSV变得烦人...
我曾尝试将其加载到数据表中,但我不喜欢该解决方案,因为我需要整个文件存储在内存中,而且某种程度上丢失了某些记录。
我正在使用parquet.net,但可以使用任何其他在.net core / standard上运行的Parquet库
谢谢。
答案 0 :(得分:1)
我还没有试过,但是我想知道您是否可以利用/滥用Microsoft Spark SQL库以使您受益。
有
DataFrameReader.Parquet(String [])
还有:
DataFrameWriter.Csv(String)方法
我想知道您是否可以将DataFrame用作内存中介。
这只是一个猜测,因为您的问题吸引了我,也许我睡一会儿后就给我试一下。 :-)
答案 1 :(得分:1)
使用Cinchoo ETL-一个开放源代码库,您可以轻松地将Parquet文件转换为CSV。
安装Nuget软件包
安装软件包ChoETL.Parquet
示例代码
使用ChoETL;
StringBuilder csv = new StringBuilder();
using (var r = new ChoParquetReader(@"*** Your Parquet file ***")
.ParquetOptions(o => o.TreatByteArrayAsString = true)
)
{
using (var w = new ChoCSVWriter(csv)
.WithFirstLineHeader()
.UseNestedKeyFormat(false)
)
w.Write(r);
}
Console.WriteLine(csv.ToString());
有关更多信息,请访问codeproject文章。
希望有帮助。