Спекулятивное выполнение искры: альтернативная реализация картографа для второй попытки - PullRequest
0 голосов
/ 31 октября 2019

В моей системе pyspark я запускаю приложение с картой / уменьшить поток:

sc.map(mapper).reduce(reducer)

Мой маппер выполняет тяжелые итеративные вычисления, а редуктор просто добавляет результаты.

Безусловно,из-за перегрузки системы у меня много борцов (около трети исполнителей работают значительно медленнее).

Чтобы решить эту проблему, я хочу воспользоваться тем фактом, что с моим приложением все в порядке с частичными результатами.

Я знаю, что умозрительное выполнение позволяет обрабатывать захватчики, одновременно выполняя вспомогательный преобразователь и принимаяРезультаты первого, который заканчивается. Это нормально, но мне было интересно, есть ли альтернативный подход, в котором я мог бы сделать одно из следующего:

  1. Заказать остальные мапперы, чтобы остановить то, что они делают, и вернуть частичные результаты, когда, например,0.5 исполнителей заканчивают.
  2. Если нет, то прикажите оставшимся мапперам прекратить то, что они делают, но не возвращая частичных результатов, но все же собирая результаты успешных мапперов в драйвер.
  3. Если нет, может быть, даже остановить мапперы без каких-либо результатов.
  4. Наконец, возможно ли предоставить альтернативную функцию маппера для второй попытки, чтобы я мог попробовать другой (возможно, более короткий) расчет в альтернативной реализации?
...