我有两个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,但是这些函数按键匹配,在这种情况下将不起作用,因为键明显不同。合并这两个数据集的最佳方法是什么?

最佳答案

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

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


您还可以使其平坦:

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

关于java - 如何使用自定义逻辑合并两个JavaPairRDD,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38731015/

10-11 10:28