将 Parquet 转换为 CSV

Posted

技术标签:

【中文标题】将 Parquet 转换为 CSV【英文标题】:Converting Parquet to CSV 【发布时间】:2018-03-21 10:48:14 【问题描述】:

我的 hdfs 中有镶木地板文件。我想将这些镶木地板文件转换为 csv 格式并复制到本地。 我试过这个:

hadoop fs -text /user/Current_Data/partitioned_key=MEDIA/000000_0  > /home/oozie-coordinator-workflows/quality_report/media.csv

hadoop fs -copyToLocal /user/Current_Data/partitioned_key=MEDIA/000000_0 /home/oozie-coordinator-workflows/quality_report/media1.csv

【问题讨论】:

【参考方案1】:

你在做什么是行不通的,你只是在读写拼花数据而不是转换。

你可以用 spark 或者 hive/impala 来做,下面是 spark 中的解释。

火花:

阅读镶木地板文件:

df = spark.read.parquet("/user/Current_Data/partitioned_key=MEDIA/")

将其写入 HDFS:

df.write.csv("home/oozie-coordinator-workflows/quality_report/media1.csv")

查看以上here的更多信息。

蜂巢:

CREATE TABLE test ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS AVRO TBLPROPERTIES ('avro.schema.url'='myHost/myAvroSchema.avsc'); 

CREATE EXTERNAL TABLE parquet_test LIKE test STORED AS PARQUET LOCATION 'hdfs:///user/Current_Data/partitioned_key=MEDIA/';

获得表格后,您可以使用以下命令通过 beeline/hive 创建 CSV 文件。

beeline -u 'jdbc:hive2://[databaseaddress]' --outputformat=csv2 -e "select * from parquet_test" > /local/path/toTheFile.csv

查看以下两个链接了解更多说明。

Dynamically create Hive external table with Avro schema on Parquet Data

Export as csv in beeline hive

【讨论】:

您的第一个链接不再可用。

以上是关于将 Parquet 转换为 CSV的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Parquet 文件转换为 Delta 文件

将 Parquet 转换为 CSV

使用 Spark 将 csv.gz 文件转换为 Parquet

如何将 HDF5 文件转换为 Parquet 文件?

如何将 txt 文件转换为 parquet 文件并将其加载到 hdfs table-pyspark

如何在 Spark 2.1.0 中使用 SparkSQL 将“.txt”转换为“.parquet”?