Подтвердить что ты не робот

Объединение наборов данных различных RDD в искры Apache с использованием scala

Есть ли способ объединить наборы данных двух разных RDD в искровом?

Требование - я создаю два промежуточных RDD, используя scala, который имеет одинаковые имена столбцов, должен объединить эти результаты как RDD, так и кэшировать результат для доступа к пользовательскому интерфейсу. Как объединить эти данные здесь?

RDD имеют тип spark.sql.SchemaRDD

4b9b3361

Ответ 1

Я думаю, что вы ищете RDD.union

val rddPart1 = ???
val rddPart2 = ???
val rddAll = rddPart1.union(rddPart2)

Пример (на Spark-shell)

val rdd1 = sc.parallelize(Seq((1, "Aug", 30),(1, "Sep", 31),(2, "Aug", 15),(2, "Sep", 10)))
val rdd2 = sc.parallelize(Seq((1, "Oct", 10),(1, "Nov", 12),(2, "Oct", 5),(2, "Nov", 15)))
rdd1.union(rdd2).collect

res0: Array[(Int, String, Int)] = Array((1,Aug,30), (1,Sep,31), (2,Aug,15), (2,Sep,10), (1,Oct,10), (1,Nov,12), (2,Oct,5), (2,Nov,15))

Ответ 2

У меня была та же проблема. Для объединения по строкам вместо столбца используйте unionAll:

val rddPart1= ???
val rddPart2= ???
val rddAll = rddPart1.unionAll(rddPart2)

Я нашел его после прочтения сводки метода для фрейма данных. Дополнительная информация: https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/DataFrame.html