【问题标题】:How to combine two JavaPairRDD's using custom logic如何使用自定义逻辑组合两个 JavaPairRDD
【发布时间】:2016-08-02 21:45:11
【问题描述】:

我有两个 JavaPairRDD。

JavaPairRDD<List<String>, CustomObject> originalData = ...;
JavaPairRDD<String, CustomField> newData = ...;

在这种情况下,CustomField 是 CustomObject 中的一个字段。我的目标是在 newData 的键在 originalData 的键中的条件下组合这两个数据集。所以,如果我有类似的东西

originalData = ({"foo1", "foo2", "foo3"}, customObject1)

newData = ("foo1", customField1)

我想匹配这两个项目,并将 customField1 插入 customObject1。我查看了 Cogroup 和 FullOuterJoin,但这些函数通过键匹配,在这种情况下这不起作用,因为键明显不同。结合这两个数据集的最佳方法是什么?

【问题讨论】:

    标签: java scala apache-spark rdd


    【解决方案1】:

    您需要原始形状吗?如果不使用笛卡尔:

    originalData.cartesian(newData).filter(checkConditon);
    

    你也可以把它弄平:

    JavaPairRDD<String, CustomObject> flatData = originalData.flatMap(flatteningFunc);
    flatData.join(newData);
    

    【讨论】:

    • 我觉得第二个选项快很多
    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 2015-07-29
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多