2016-10-18 3 views
0

Учитывая парное RDD, как мне создать другое RDD с тем же набором ключей и декартово произведение значений (для каждой клавиши) в качестве новых значений?Декартовое произведение значений для каждого ключа

Вот что я имею в виду:

//Given 
(K1, V1) 
(K1, V2) 
(K2, W1) 
(K2, W2) 

//Want 
(K1, (V1, V1)) 
(K1, (V1, V2)) 
(K1, (V2, V2)) 
(K2, (W1, W1)) 
(K2, (W1, W2)) 
(K2, (W2, W2)) 
//Note (V2, V1) and (W2, W1) are not required, but having them in the result is not a big deal either. 

Будучи новым для Scala и Спарк, я не вижу простое решение, используя встроенные преобразования, такие как mapValues. Не хватает ли некоторых магических функций? Большое спасибо.

ответ

3

Просто присоединиться вещь с собой:

rdd.join(rdd) 
+1

Я не ожидал, что ответ будет это просто. Работала отлично. Благодаря! –

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