【问题标题】:Merge two RDDs in Spark Scala在 Spark Scala 中合并两个 RDD
【发布时间】:2015-10-18 04:55:01
【问题描述】:

我有两个 RDD。

rdd1 =(字符串,字符串)

key1, value11
key2, value12
key3, value13

rdd2 =(字符串,字符串)

key2, value22
key3, value23
key4, value24

我需要用 rdd1 和 rdd2 的合并行形成另一个 RDD,输出应该如下所示:

key2, value12 ; value22
key3, value13 ; value23

所以,基本上就是取 rdd1 和 rdd2 的键的交集,然后加入它们的值。 ** 值应按顺序排列,即 value(rdd1) + value(rdd2),而不是相反。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    我认为这可能是您正在寻找的:

    join(otherDataset, [numTasks])  
    

    当在 (K, V) 和 (K, W) 类型的数据集上调用时,返回 (K, (V, W)) 对的数据集,其中包含每个键的所有元素对。通过 leftOuterJoin、rightOuterJoin 和 fullOuterJoin 支持外连接。

    See the associated section of the docs

    【讨论】:

    • 我认为 (rdd1 join rdd2) 有效,然后可以使用 map 来获取正确格式的数据。谢谢
    • 刚刚在 Databricks 社区版上测试了这个,在运行 scala 2.11 的 spark 2.0.2-db 集群上。 (sc.parallelize(List((1, "a"), (2, "b"), (3, "c"))) join sc.parallelize(List((1, "z"), (2, "x"), (3, "y")))).collect().foreach(println) 产生一个包含预期元组的 3 项 rdd。
    【解决方案2】:

    【讨论】:

    • 合并可能并不意味着 JOIN 恕我直言
    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多