将 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spark 将 csv.gz 文件转换为 Parquet