Предположим, у меня есть один RDD из Tuple2
, как показано ниже:Как объединить два RDD с разными ключами в java Spark?
<session1_w1, <0.2, 2>>,
<session1_w2, <1.3, 4>>,
<session1_w3, <0.4, 3>>,
<session2_w1, <0.5, 2>>,
<session2_w2, <2.3, 6>>
Мне нужно отобразить его на следующей РДУ, таким образом, что последнее поле является суммирование последних полей кортежей с тем же значением ключа частичного например session1
:
2 + 4 + 3 => 9
2 + 6 => 8
Так Результат, который я ожидаю:
<session1_w1, 0.2, 9>,
<session1_w2, 1.3, 9>,
<session1_w3, 0.4, 9>,
<session2_w1, <0.5, 8>>,
<session2_w2, <2.3, 8>>
Это своего рода сокращения, но я не хочу потерять оригинальные ключи.
Я могу рассчитать суммирование путем сопоставления, а затем сводя к следующему RDD, но тогда мне нужно объединить этот RDD с первым RDD, чтобы получить результат.
<session1, 9> <session2, 8>
Есть идеи?
Спасибо, но для вашего второго решения, как я могу присоединиться к двум RDD с разными ключами? Например, первый имеет «key = session1_w1», а второй имеет «key = session1» –
@Mashaye. Каково ваше определение для 'join'? –
Обычно соединение выполняется между Rdds с одним и тем же набором ключей. У моих RDD есть разные ключи, как описано в вопросе. Во всяком случае, я использовал второе решение, которое предоставил GameOfThrows, и это сработало. –