如何使用自定义逻辑

时间:2016-08-02 21:45:11

标签: java scala apache-spark rdd

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

1 个答案:

答案 0 :(得分:1)

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

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

你也可以把它弄平:

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