Совместно разделенные соединения в искрах SQL

Существуют ли какие-либо реализации Spark SQL DataSources, которые предлагают объединения Co-partition - скорее всего, через CoGroupRDD? Я не видел никаких применений в существующей кодовой базе Spark.

Мотивация будет заключаться в том, чтобы значительно уменьшить трафик в случайном порядке в случае, когда две таблицы имеют одинаковый номер и одинаковые диапазоны ключей разбиения: в этом случае вместо Mx1 будет Mx1 > MxN перетасовка.

Единственная крупномасштабная реализация объединений в настоящее время в Spark SQL кажется ShuffledHashJoin - для этого требуется разветвление MxN shuffle и, следовательно, дорого.

Ответы

Ответ 1

Я думаю, что вы ищете Bucket Join optimization, который должен появиться в Spark 2.0.

В 1.6 вы можете выполнить нечто подобное, но только путем кэширования данных. SPARK-4849