2015-05-14 2 views
1

Я новичок в Spark. Я проверяю проблемы перетасовки в тестовом приложении, и я не знаю, почему в моей программе метод mapPartitionsWithIndex вызывает перетасовку! Как вы можете видеть на картинке, у моего первоначального RDD есть два раздела размером 16 МБ и Shuffle пишут около 49,8 МБ. Я знаю, что map или или mapPartitionsWithIndex не перетасовывают трансформацию, как groupByKey, но я вижу, что они также вызывают перетасовку в Spark. Зачем?Почему mapPartitionsWithIndex вызывает перетасовку в Spark?

enter image description here enter image description here

ответ

0

Я думаю, что вы выполняете некоторые операции соединения/группы после mapPartitionsWithIndex и это вызывает перетасовать.

Вы можете установить его, изменив код.

текущий код

val rdd = inputRDD1.mapPartitionsWithIndex(....) 
val outRDD = rdd.join(inputRDD2) 

Модифицированный код

val rdd = inputRDD1.mapPartitionsWithIndex(....) 
println(rdd.count) 
+0

Но, если это так, почему искра рассматривает этот метод как этап и не принимает во внимание следующую операцию соединения/группы в качестве заключительной операции в стадии ? –

+0

Этап соответствует набору задач, каждый из которых выполняет один и тот же код, каждый из которых находится в другом подмножестве данных. Каждый этап содержит последовательность преобразований, которые могут быть выполнены без перетасовки полных данных. - http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-1/ – banjara

+0

Я знаю, но я помню, что заключительная операция на каждом этапе обычно операция перетасовки, и если мы предположим, что после этого метода карты есть операция join/group, то она должна быть как заключительная операция на этом этапе и показывает вместо mapPartitionWithIndex. –

Смежные вопросы