#scala #apache-spark #apache-spark-dataset
#scala #apache-искра #apache-spark-dataset
Вопрос:
Привет, в моей работе spark на определенном этапе я объединяю (объединяю) 3 набора данных по 300 разделов в каждом. Вот объединительный этап задания с 900 задачами. Как вы можете видеть, есть 1 задача, которая выполняется более часа. Однако это происходит не всегда. Я знаю, что это трудно понять, не глядя на данные, но есть ли какие-либо общие причины для такой ситуации и рекомендации по ее исправлению?
Ответ №1:
У меня возникла аналогичная проблема, когда мне пришлось объединить несколько наборов данных Spark перед объединением, и объединение всегда заканчивалось только одной длительной задачей. Итак, я решил это сейчас. Проблема связана с «объединением после объединения»: я заметил, что оставшаяся одна задача медленно обрабатывала ВСЕ записи! И моя гипотеза заключается в том, что причина, по которой ВСЕ записи оказались в одной задаче, заключалась в перетасовке. В моем случае соединение после объединения может вызвать перетасовку, поэтому я удалил соединение после объединения, и теперь оно работает.
По сути, теперь мне нужно переместить объединение перед объединением, поэтому я просто соединяю каждый подмножество данных с другим набором данных, а затем объединяю результаты (у меня осталось соединение, поэтому результаты все равно будут одинаковыми).