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

Работя със Spark върху HDFS клъстер. Преди операция за присъединяване в Java Spark между два (ключ, стойност) PairRDD, разделям данните на двата файла с HashPartitioner, за да има елементи с един и същи ключ на една и съща машина. Това е добре за всеки файл поотделно, но както беше споменато в предишна публикация Когато създадете два различни Spark Pair RDD с един и същ набор ключове, Spark ще разпредели ли дял със същия ключ на една и съща машина?, разделените RDD не са непременно разположени заедно, така че едни и същи ключове от двата RDD може да не са на една и съща машина.

Има ли начин да принудите искра да направи това? за да сте сигурни, че едни и същи ключове от различни PairRDD са на една и съща машина

Между другото, тъй като използваме хеш-разделяне, и за двата RDD едни и същи ключове са в един и същ номер на дял, но редът на машините, на които се записват дялове, е различен от един RDD до друг.

Например, ако имаме 'N' машини, има ли начин да припишем номер на всяка машина (предполагам, че spark прави това вътрешно) и след това просто принуди номерът на дяла 'P' да бъде записан на машината 'N modulo П'?


person nwali    schedule 13.01.2016    source източник
comment
Бихте ли обяснили защо искате това?   -  person zero323    schedule 13.01.2016
comment
За ефективност на кода, така че при свързване на двата RDD, spark прекарва по-малко време в разбъркване на данни между възли, тъй като всички едни и същи ключове биха били само на една машина, като по този начин задачите за присъединяване ще се извършват вътрешно за всяка машина, а не между различни възли.   -  person nwali    schedule 14.01.2016