Параллельные записи нескольких фреймов данных в Spark - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть сценарий, где я должен записать несколько кадров данных в формате паркета. Я использовал это

df.write
      .format("parquet")
      .mode(<write-mode>)
      .option("compression", "gzip")
      .save(<file-path>)

Теперь у меня есть около 15 фреймов данных, которые будут записывать данные в паркет. Я вижу, что одновременно выполняется только одна задача (поэтому записывается только 1 кадр данных). Также, когда я проверил количество активных исполнителей в spark-ui, я вижу, что используется только 1 исполнитель enter image description here

Мои вопросы:

  • Можно ли выполнять параллельную запись нескольких фреймов данных в паркет (вместо последовательной записи)?

1 Ответ

0 голосов
/ 05 февраля 2020

Конечно возможно. https://georgheiler.com/2019/12/05/parallel-aggregation-of-dataframes/ Хороший пример, который я недавно создал.

Главное, что вам нужно параллельно выполнять действия / записи на драйвере. Это означает, что вам как-то нужно вручную управлять потоками и параллелизмом.

Но не менее важно установить планировщик искр в честный режим. В противном случае он будет отправляться параллельно и работать параллельно, только если дополнительные слоты свободны. По крайней мере, в вашей обстановке это не похоже на это. Таким образом, только при настройке на справедливость планировщик предоставит каждому действующему действию равную долю слотов.

Вы можете создать несколько пулов ресурсов.

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