Нет, я получаю гораздо больше файлов на входе (около тысячи разделов)

ускаю простой тестовый анализ приложений, который читает данные за один год и записывает в Hive такое же количество данных, разбитых по дням. Перед записью я объединяю 15 разделов в каждом файле, чтобы не было много маленьких записанных файлов. Я хотел бы сделать это параллельно, используя планировщик FAIR; мое приложение работает с 200 исполнителями и 4 ядрами (что означает, что одновременно может выполняться 800 задач), и это конфигурация пула

<allocations>
  <pool name="writing_pool">
    <schedulingMode>FAIR</schedulingMode>
    <minShare>400</minShare>
  </pool>
</allocations

Идея состоит в том, чтобы написать 10 дней данных за работу

dates.grouped(10).toSeq.par.foreach(s => {

  spark.sparkContext.setLocalProperty("spark.scheduler.pool", "writing_pool")

  print("submitting writes for " + s.mkString(","))

  val toBeInserted = dataWithDate
    .where(col("yyyy_mm_dd").isin(s:_*))

  toBeInserted.coalesce(15).write.mode(SaveMode.Overwrite)
    .insertInto("test_write_buffer_parallel_hive")
})

Я не знаю почему, но мой кластер используется не полностью, например

Как видите, на данный момент 38 заданий только на ходу, а у меня доступно 200x4 слотов. Знаете почему?

Ответы на вопрос(0)

Ваш ответ на вопрос