我有两个JavaPairRDD。
JavaPairRDD<List<String>, CustomObject> originalData = ...;
JavaPairRDD<String, CustomField> newData = ...;
在这种情况下,CustomField是CustomObject中的一个字段。我的目标是在newData中的键位于originalData的键中的条件下组合这两个数据集。所以,如果我有像
这样的东西originalData =({&#34; foo1&#34;,&#34; foo2&#34;,&#34; foo3&#34;},customObject1)
newData =(&#34; foo1&#34;,customField1)
我想匹配这两个项目,并将customField1插入customObject1。我查看了Cogroup和FullOuterJoin,但是这些函数按键匹配,在这种情况下不会起作用,因为键明显不同。组合这两个数据集的最佳方法是什么?
答案 0 :(得分:1)
你需要原始形状吗?如果不使用笛卡尔:
originalData.cartesian(newData).filter(checkConditon);
你也可以把它弄平:
JavaPairRDD<String, CustomObject> flatData = originalData.flatMap(flatteningFunc);
flatData.join(newData);