如何使用 .NET Core 将镶木地板文件转换为 CSV?

How to convert parquet file to CSV using .NET Core?

我有一个 parquet 文件,我正在尝试将其转换为 CSV 文件,似乎大多数人都推荐使用 Spark,但是我需要使用 C# 来完成此任务,特别是我需要使用 .NET Core 3.0.

这很棘手,因为 parquet 是柱状数据,这使得转换为 CSV 很烦人...

我试过将它加载到数据表中,但我不喜欢这种解决方案,因为我需要将整个文件保存在内存中,而且我以某种方式丢失了某些记录。

我正在使用 parquet.net,但我愿意接受任何其他适用于 .net 的镶木地板库 core/standard

提前致谢。

我还没有尝试过,但我想知道您是否可以利用/滥用 Microsoft Spark SQL 库来为您谋利。

DataFrameReader.Parquet(字符串[])

https://docs.microsoft.com/en-us/dotnet/api/microsoft.spark.sql.dataframereader.parquet?view=spark-dotnet

还有:

DataFrameWriter.Csv(字符串)方法

https://docs.microsoft.com/en-us/dotnet/api/microsoft.spark.sql.dataframewriter.csv?view=spark-dotnet#Microsoft_Spark_Sql_DataFrameWriter_Csv_System_String_

我想知道您是否可以使用 DataFrame 作为内存中介。

目前这只是一个猜测,因为你的问题引起了我的兴趣,也许我睡一会就试一试。 :-)

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

安装 Nuget 包

install-package ChoETL.Parquet

示例代码

using 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文章。