如何复制镶木地板文件并将其转换为 csv
How to copy and convert parquet files to csv
我可以访问 hdfs 文件系统并且可以使用
查看 parquet 文件
hadoop fs -ls /user/foo
如何将这些 parquet 文件复制到我的本地系统并将它们转换为 csv 以便我可以使用它们?这些文件应该是每行包含多个字段的简单文本文件。
如果在 Hive 中的那些镶木地板文件上定义了 table(或者如果您自己定义了这样的 table),您可以 运行 对其进行 Hive 查询并保存结果存入 CSV 文件。尝试以下方法:
insert overwrite local directory dirname
row format delimited fields terminated by ','
select * from tablename;
用实际值替换 dirname
和 tablename
。请注意,指定目录中的任何现有内容都会被删除。有关详细信息,请参阅 Writing data into the filesystem from queries。
尝试
df = spark.read.parquet("/path/to/infile.parquet")
df.write.csv("/path/to/outfile.csv")
相关API文档:
/path/to/infile.parquet
和 /path/to/outfile.csv
都应该是 hdfs 文件系统上的位置。您可以明确指定 hdfs://...
,也可以省略它,因为它通常是默认方案。
你应该避免使用file://...
,因为本地文件对集群中的每台机器来说都是不同的文件。输出到 HDFS,然后使用命令行将结果传输到本地磁盘:
hdfs dfs -get /path/to/outfile.csv /path/to/localfile.csv
或者直接从HDFS显示:
hdfs dfs -cat /path/to/outfile.csv
更动态形式的代码段,因为您可能不完全知道镶木地板文件的名称,将是:
for filename in glob.glob("[location_of_parquet_file]/*.snappy.parquet"):
print filename
df = sqlContext.read.parquet(filename)
df.write.csv("[destination]")
print "csv generated"
我可以访问 hdfs 文件系统并且可以使用
查看 parquet 文件hadoop fs -ls /user/foo
如何将这些 parquet 文件复制到我的本地系统并将它们转换为 csv 以便我可以使用它们?这些文件应该是每行包含多个字段的简单文本文件。
如果在 Hive 中的那些镶木地板文件上定义了 table(或者如果您自己定义了这样的 table),您可以 运行 对其进行 Hive 查询并保存结果存入 CSV 文件。尝试以下方法:
insert overwrite local directory dirname row format delimited fields terminated by ',' select * from tablename;
用实际值替换 dirname
和 tablename
。请注意,指定目录中的任何现有内容都会被删除。有关详细信息,请参阅 Writing data into the filesystem from queries。
尝试
df = spark.read.parquet("/path/to/infile.parquet")
df.write.csv("/path/to/outfile.csv")
相关API文档:
/path/to/infile.parquet
和 /path/to/outfile.csv
都应该是 hdfs 文件系统上的位置。您可以明确指定 hdfs://...
,也可以省略它,因为它通常是默认方案。
你应该避免使用file://...
,因为本地文件对集群中的每台机器来说都是不同的文件。输出到 HDFS,然后使用命令行将结果传输到本地磁盘:
hdfs dfs -get /path/to/outfile.csv /path/to/localfile.csv
或者直接从HDFS显示:
hdfs dfs -cat /path/to/outfile.csv
更动态形式的代码段,因为您可能不完全知道镶木地板文件的名称,将是:
for filename in glob.glob("[location_of_parquet_file]/*.snappy.parquet"):
print filename
df = sqlContext.read.parquet(filename)
df.write.csv("[destination]")
print "csv generated"