使用scala连接Apache spark中不同RDD的数据集

时间:2014-12-10 07:27:39

标签: scala apache-spark apache-spark-sql distributed-computing rdd

有没有办法在spark中连接两个不同RDD的数据集?

要求是 - 我使用具有相同列名的scala创建两个中间RDD,需要组合这两个RDD的结果并缓存结果以访问UI。我如何在这里组合数据集?

RDD的类型为spark.sql.SchemaRDD

2 个答案:

答案 0 :(得分:44)

我认为您正在寻找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))

答案 1 :(得分: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

相关问题