我的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
答案 0 :(得分:0)
你正在做的事情是行不通的,你只是在阅读和写作未转换的实木复合地板数据。
你可以使用spark或hive / impala来实现,下面是spark中的解释。
<强> SPARK:强>
阅读镶木地板文件df = spark.read.parquet("/user/Current_Data/partitioned_key=MEDIA/")
将其写入HDFS
df.write.csv("home/oozie-coordinator-workflows/quality_report/media1.csv")
请查看以上here的更多信息。
HIVE:
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