Параллелизм Spark делает неравномерное распределение разделов - PullRequest
0 голосов
/ 25 мая 2019

Предположим, у нас есть 10 узлов, каждый из которых имеет 2 ядра. Мы устанавливаем для defaultParallelism значение 2*10=20, надеясь, что каждому узлу будет назначено ровно 2 раздела, если мы вызовем sc.parallelize(1 to 20). Это предположение по некоторым причинам оказывается неверным в некоторых случаях. В зависимости от некоторых условий Spark иногда размещает более 2 разделов на одном узле, иногда пропуская один или несколько узлов в целом. Это приводит к серьезному перекосу, и перераспределение не помогает (поскольку мы не контролируем размещение разделов на физических узлах).

  • Почему это может произойти?
  • Как сделать так, чтобы каждому узлу было назначено ровно 2 раздела?

Кроме того, spark.locality.wait установлен на 999999999s, что стоит.

DAG, в которой это происходит, приведен ниже. В то время как распараллеливание на этапе 0 назначает разделы равномерно, распараллеливание на этапе 1 - нет. Это всегда так - почему?

DAG

Связывание связанный вопрос .

...