В частности, если я скажу
rdd3 = rdd1.join(rdd2)
тогда, когда я вызываю rdd3.collect
, в зависимости от используемого Partitioner
, либо данные перемещаются между разделами узлов, либо соединение выполняется локально на каждом разделе (или, насколько мне известно, что-то еще полностью).
Это зависит от того, что бумага RDD называет "узкими" и "широкими" зависимостями, но кто знает, насколько хорош оптимизатор на практике.
В любом случае, я могу подобрать из вывода трассировки, что на самом деле произошло, но было бы неплохо позвонить rdd3.explain
.
Существует ли такая вещь?