Как записать данные в кадре данных в один файл.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)
Другие вопросы по тегам