У меня есть 2 спарк-RDD, первый содержит отображение между некоторыми индексами и идентификаторами, которые являются строками, а второй содержит наборы связанных индексов
val ids = spark.sparkContext.parallelize(Array[(Int, String)](
(1, "a"), (2, "b"), (3, "c"), (4, "d"), (5, "e"))).toDF("index", "idx")
val relationships = spark.sparkContext.parallelize(Array[(Int, Int)](
(1, 3), (2, 3), (4, 5))).toDF("index1", "index2")
Я хочу как-то присоединиться к этим СДР (или слиянию, или sql, или к любой наилучшей искровой практике), чтобы вместо них иметь в конце связанные идентификаторы:
Результат моего комбинированного RDD должен вернуть:
("a", "c"), ("b", "c"), ("d", "e")
Любая идея, как я могу выполнить эту операцию оптимальным образом, не загружая ни один СДР в карту памяти (потому что в моих сценариях эти СДР могут потенциально загружать миллионы записей)