Как конвертировать паркетный файл в CSV с помощью. NET Core? - PullRequest
1 голос
/ 30 мая 2020

У меня есть паркетный файл, и я пытаюсь преобразовать его в файл CSV, кажется, что большинство рекомендуют использовать Spark, однако мне нужно использовать C# для выполнения sh этой задачи, в частности, мне нужно использовать . NET Core 3.0.

Это сложно, потому что паркет представляет собой столбчатые данные, из-за которых преобразование в CSV раздражает ...

Я попытался загрузить его в базу данных, но мне не нравится это решение, потому что мне нужен весь файл в памяти, и я каким-то образом теряю некоторые записи.

Я использую паркет. net но я открыт для любой другой библиотеки паркета, которая работает. net core / стандарт

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 июня 2020

С помощью Cinchoo ETL - библиотеки с открытым исходным кодом, вы можете легко преобразовать файл Parquet в CSV.

Установить пакет Nuget

install-package 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.

Надеюсь, это поможет.

1 голос
/ 30 мая 2020

Я не пробовал, но мне интересно, могли бы вы использовать / злоупотреблять библиотеками Microsoft Spark SQL в ваших интересах.

Там

DataFrameReader.Parquet (String [])

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

А также:

DataFrameWriter.Csv (String) Method

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

Интересно, можно ли использовать DataFrame в качестве посредника в памяти.

Это всего лишь предположение, поскольку ваш вопрос меня заинтриговал, возможно, я дам его выстрел, как только я немного посплю. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...