6

如何将数据帧中的数据写入 HDFS 中的单个 .parquet 文件(单个文件中的数据和元数据)?

df.show() --> 2 rows
+------+--------------+----------------+
| name|favorite_color|favorite_numbers|
+------+--------------+----------------+
|Alyssa| null| [3, 9, 15, 20]| | Ben| red| []|
+------+--------------+----------------+

df.rdd.getNumPartitions()- 它有 1 个分区

>>> df.rdd.getNumPartitions()

1

df.write.save("/user/hduser/data_check/test.parquet", format="parquet")

如果我使用上述命令在 HDFS 中创建 parquet 文件,它会在该目录"payloads.parquet"HDFS和该目录内创建多个文件.parquet文件,元数据文件正在保存。

找到 4 件商品

-rw-r--r-- 3 bimodjoul biusers 0 2017-03-15 06:47 
/user/hduser/data_check/test.parquet/_SUCCESS 
-rw-r--r-- 3 bimodjoul biusers 494 2017-03-15 06:47
/user/hduser/data_check/test.parquet/_common_metadata
-rw-r--r-- 3 bimodjoul biusers 862 2017-03-15 06:47
/user/hduser/data_check/test.parquet/_metadata 
-rw-r--r-- 3 bimodjoul biusers 885 2017-03-15 06:47
/user/hduser/data_check/test.parquet/part-r-00000-f83a2ffd-38bb-4c76-9f4c-357e43d9708b.gz.parquet

如何将数据框中的数据写入单个.parquet文件(单个文件中的数据和元数据)HDFS而不是包含多个文件的文件夹?

帮助将不胜感激。

4

2 回答 2

0

写入后使用 coalesce(1)。它会解决你的问题

df.coalesce(1).write
于 2018-05-24T21:09:07.430 回答
0

这应该可以解决问题。

df.coalesce(1).write.parquet(parquet_file_path)
df.write.mode('append').parquet("/tmp/output/people.parquet")
于 2020-07-27T13:52:08.673 回答