Можем ли мы заставить spark сохранять разделы из двух PairRDD с одним и тем же ключом на одних и тех же машинах?

Я работаю со Spark поверх кластера HDFS. Перед операцией соединения в Java Spark между двумя (ключ, значение) PairRDD я разделяю данные обоих файлов с помощью HashPartitioner, чтобы иметь элементы с одним и тем же ключом на одном компьютере. Это нормально для каждого файла по отдельности, но, как упоминалось в предыдущем посте -set-will-spark-distribut">При создании двух разных RDD Spark Pair с одним и тем же набором ключей будет ли Spark распространять разделы с одним и тем же ключом на одну и ту же машину?, разделенные RDD не обязательно расположены в одном месте, поэтому одни и те же ключи от обоих RDD не могут находиться на одном компьютере.

Есть ли способ заставить искру сделать это? чтобы убедиться, что одни и те же ключи от разных PairRDD находятся на одной машине

Кстати, поскольку мы используем хеш-разбиение, для обоих RDD одни и те же ключи находятся в одном и том же номере раздела, но порядок машин, на которых сохраняются разделы, отличается от одного RDD к другому.

Например, если у нас есть «N» машин, есть ли способ присвоить номер каждой машине (я думаю, искра делает это внутри), а затем просто принудительно записать номер раздела «P» на машину «N по модулю». П'?


person nwali    schedule 13.01.2016    source источник
comment
Не могли бы вы объяснить, зачем вам это?   -  person zero323    schedule 13.01.2016
comment
Для эффективности кода, чтобы при объединении двух RDD, spark тратил меньше времени на перетасовку данных между узлами, поскольку все одинаковые ключи будут только на одном компьютере, поэтому задачи соединения будут выполняться внутри каждого компьютера, а не между разными узлами.   -  person nwali    schedule 14.01.2016