Лучшая стратегия для repartionBy с несколькими большими разделами - PullRequest
0 голосов
/ 29 июня 2018

Мне нужно перераспределить геоданные по квадке. Прежде всего, все данные довольно сбалансированы, но немногие разделы в 500 раз больше других. Таким образом, это вызывает очень несбалансированную стадию разделения, например, 20-30 из 3500 задач на 98% медленнее, чем другие. Есть ли хорошая стратегия в этом случае?

Мне нужно сделать следующее:

stage.repartition(partitionColumns.map(new org.apache.spark.sql.Column(_)):_*)
  .write.partitionBy(partitionColumns:_*)
  .format("parquet")
  .option("compression", "gzip")
  .mode(SaveMode.Append)
  .save(destUrl)

1 Ответ

0 голосов
/ 29 июня 2018

.repartition не требуется и, вероятно, вызывает проблему.

Если вы пропустите это и получите .write.partitionBy..., вы все равно получите ту же структуру каталогов, у вас будет только несколько файлов в каждом каталоге.

...