Как записать данные в кадре данных в один файл.parquet (данные и метаданные в одном файле) в HDFS?
Как записать данные в кадре данных в один файл.parquet (данные и метаданные в одном файле) в HDFS?
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, это создает каталог "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
а не папка с несколькими файлами?
Помощь будет высоко ценится.
1 ответ
Это должно решить проблему.
df.coalesce(1).write.parquet(parquet_file_path)
df.write.mode('append').parquet("/tmp/output/people.parquet")
Используйте coalesce(1) после записи. это решит вашу проблему
df.write.coalesce(1)