如何使用自定义逻辑组合两个 JavaPairRDD

How to combine two JavaPairRDD's using custom logic

我有两个 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);