Запись файлов .txt в GCS из Spark / Dataproc: как записать только один большой файл вместо автоматического разделения на несколько? - PullRequest
1 голос
/ 07 ноября 2019

Я использую Dataproc для запуска скрипта Pyspark, который записывает фрейм данных в текстовые файлы в хранилище облачного хранилища Google. Когда я запускаю скрипт с большими данными, я автоматически получаю большое количество текстовых файлов в моей выходной папке, но мне нужен только один большой файл.

Я читаю здесь Запись Spark saveAsTextFile ()для нескольких файлов вместо одного Я могу использовать .repartition (1) перед .write (), чтобы получить один файл, но я хочу, чтобы он работал быстро (конечно), поэтому я не хочу возвращаться к одному разделу раньшевыполняя .write ().

df_plain = df.select('id', 'string_field1').write.mode('append').partitionBy('id').text('gs://evatest/output', compression="gzip")

1 Ответ

2 голосов
/ 07 ноября 2019

Не думайте о GCS как о файловой системе. Содержимое корзины GCS представляет собой набор неизменяемых BLOB-объектов (файлов). После написания они не могут быть изменены. Моя рекомендация - позволить вашей работе писать все файлы независимо и объединять их в конце. Есть несколько способов добиться этого.

Самый простой способ добиться этого - с помощью команды gsutil compose.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...