2016-08-01 3 views
2

Итак, я попытался протестировать операции Spark, которые вызывают перетасовку на основе этого сообщения stackoverflow: LINK. Тем не менее, это не имеет смысла для меня, когда операция cartesian не вызывает перетасовку в Spark, поскольку они должны перемещать разделы по сети, чтобы локализовать их локально.Spark cartesian не вызывает перетасовку?

Как искры фактически выполняют свои cartesian и distinct операции за сценой ???

ответ

2

В случайном порядке представляет собой операцию, которая является специфическим для антирадаров пар ключ-значение (RDD[(T, U)] обычно называют PairRDDs или PairwiseRDDs) и более или менее эквивалентно перетасовать фазы в Hadoop. Целью тасования является перемещение данных конкретному исполнителю на основе значения ключа и Partitioner.

В Spark существуют различные типы операций, которые требуют сетевого трафика, но не используют логику того же типа, что и в случайном порядке, и не всегда требуют пары ключ-значение. Декартово произведение является одной из этих операций. Он перемещает данные между машинами (фактически это вызывает гораздо более дорогостоящие перемещения данных), но не устанавливает отношения между ключами и исполнителями.

+0

Итак, как я узнаю, какие операции потребуют сетевого трафика в Spark? Как вы уже упоминали, 'cartesian' на самом деле является дорогостоящей операцией, основанной на движении данных. Следовательно, нам было бы лучше знать, какие другие операции имеют такое поведение, чтобы мы могли избежать этого. – Tim

+1

Если операции выражаются только «mapPartitions» («map», «filter» и т. Д.), Это не требует перемещения данных. В противном случае он, вероятно, перемещает данные другими способами. – zero323

+1

Дополнительная информация от официальных источников искры http://spark.apache.org/docs/latest/programming-guide.html#shuffle-operations – DanielVL