我有权访问一个hdfs文件系统,可以看到Parquet文件与
hadoop fs -ls /user/foo
如何将这些Parquet文件复制到本地系统并将其转换为csv以便使用它们?这些文件应该是简单的文本文件,每行有许多字段。
2uluyalo1#
更具动态性的表单的代码段,因为您可能不知道Parquet文件的名称,将是:
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"
lc8prwob2#
尝试
df = spark.read.parquet("/path/to/infile.parquet") df.write.csv("/path/to/outfile.csv")
相关api文件:pyspark.sql.dataframereader.parquetpyspark.sql.dataframewriter.csv两者 /path/to/infile.parquet 以及 /path/to/outfile.csv 应该是hdfs文件系统上的位置。您可以指定 hdfs://... 或者您可以忽略它,因为它通常是默认方案。你应该避免使用 file://... ,因为本地文件对群集中的每台计算机都意味着不同的文件。输出到hdfs,然后使用命令行将结果传输到本地磁盘:
/path/to/infile.parquet
/path/to/outfile.csv
hdfs://...
file://...
hdfs dfs -get /path/to/outfile.csv /path/to/localfile.csv
或直接从hdfs显示:
hdfs dfs -cat /path/to/outfile.csv
wwodge7n3#
如果在配置单元中的那些Parquet文件上定义了一个表(或者如果您自己定义了这样的表),则可以对其运行配置单元查询并将结果保存到csv文件中。试着做一些类似的事情:
insert overwrite local directory dirname row format delimited fields terminated by ',' select * from tablename;
替代品 dirname 以及 tablename 实际值。请注意,指定目录中的任何现有内容都将被删除。有关详细信息,请参阅从查询将数据写入文件系统。
dirname
tablename
3条答案
按热度按时间2uluyalo1#
更具动态性的表单的代码段,因为您可能不知道Parquet文件的名称,将是:
lc8prwob2#
尝试
相关api文件:
pyspark.sql.dataframereader.parquet
pyspark.sql.dataframewriter.csv
两者
/path/to/infile.parquet
以及/path/to/outfile.csv
应该是hdfs文件系统上的位置。您可以指定hdfs://...
或者您可以忽略它,因为它通常是默认方案。你应该避免使用
file://...
,因为本地文件对群集中的每台计算机都意味着不同的文件。输出到hdfs,然后使用命令行将结果传输到本地磁盘:或直接从hdfs显示:
wwodge7n3#
如果在配置单元中的那些Parquet文件上定义了一个表(或者如果您自己定义了这样的表),则可以对其运行配置单元查询并将结果保存到csv文件中。试着做一些类似的事情:
替代品
dirname
以及tablename
实际值。请注意,指定目录中的任何现有内容都将被删除。有关详细信息,请参阅从查询将数据写入文件系统。