2014-10-27 3 views
1

У меня есть два РДА с разными ключами:Распределите новый RDD как существующий RDD в Spark?

RDD1: (K1, V1) 
RDD2: (K2, V2) 

И у меня есть функция, которая работает на данных V2 и что впоследствии карты K2 и K1. Результатом является новый RDD, RDD3: (K1, V2_transformed). Мои конечные результаты основаны на некоторых операциях на RDD1V1 и RDD3V2_transformedпо ключевому слову.

Мне кажется, что было бы полезно распределить RDD3 так же, как RDD1, чтобы избежать дорогостоящего объединения после этого. Есть ли способ априори указать, что я хочу RDD3 распределены так же, как RDD1?

Я работаю с PySpark.

ответ

3

Вы можете использовать rdd.partitionBy(new HashPartitioner(numpartitions)), если вы используете тот же самый разделитель для обоих RDD, вы должны быть в порядке.

+0

Поскольку я использую Python, могу ли я передать разделитель на 'rdd.partitionBy'? Это «portable_hash», упомянутый в документах ('partitionBy (self, numPartitions, partitionFunc = portable_hash)')? –

+0

@Def_Os не уверен никогда не использовал версию python – aaronman

+0

'rdd.partitionBy' без аргументов (выбор по умолчанию) отлично подходит для этого. –

Смежные вопросы