如何使用自定义逻辑组合两个 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);
我有两个 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);