如何在hdfs中将数据框中的数据写入单个.parquet文件(单个文件中的data&元数据)?
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")
如果我使用上述命令在HDF中创建parquet文件,则它正在HDFS
中创建目录"payloads.parquet"
,并且在该目录内部多个文件.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
如何在 HDFS
中的单个 .parquet
文件(单个文件中的数据&元数据)中写入数据,而不是具有多个文件的文件夹?
帮助您将不胜感激。
这应该解决问题。
df.coalesce(1).write.parquet(parquet_file_path)
df.write.mode('append').parquet("/tmp/output/people.parquet")
写后使用cocecce(1)。它将解决您的问题
df.coalesce(1).write