Ответ 1
Я думаю, что вы ищете Bucket Join optimization, который должен появиться в Spark 2.0.
В 1.6 вы можете выполнить нечто подобное, но только путем кэширования данных. SPARK-4849
Существуют ли какие-либо реализации Spark SQL DataSources, которые предлагают объединения Co-partition - скорее всего, через CoGroupRDD? Я не видел никаких применений в существующей кодовой базе Spark.
Мотивация будет заключаться в том, чтобы значительно уменьшить трафик в случайном порядке в случае, когда две таблицы имеют одинаковый номер и одинаковые диапазоны ключей разбиения: в этом случае вместо Mx1 будет Mx1 > MxN перетасовка.
Единственная крупномасштабная реализация объединений в настоящее время в Spark SQL кажется ShuffledHashJoin - для этого требуется разветвление MxN shuffle и, следовательно, дорого.
Я думаю, что вы ищете Bucket Join optimization, который должен появиться в Spark 2.0.
В 1.6 вы можете выполнить нечто подобное, но только путем кэширования данных. SPARK-4849