有条件地加入和映射 2 个 RDD

Posted

技术标签:

【中文标题】有条件地加入和映射 2 个 RDD【英文标题】:Join and map 2 RDDs conditionally 【发布时间】:2017-03-07 17:17:53 【问题描述】:

我有 2 个 RDD 需要加入

val rdd1 = RDD[(v_id, inputObject1)]

其中 v_id 是唯一 ID

并且 inputObject1 有以下字段

g_id, p_id, timestamp=t1

现在我有另一个 RDD

val rdd2 = RDD[(g_id, inputObject2)]

其中 inputObject2 有以下字段

p_id, timestamp=t2, e_id

现在我想在以下条件下加入这两个 RDD

如果g_id 和p_id 相同并且|t1-t2| 否则,如果 g_id 相同且 |t1 - t2|

因此,如果第一个条件不满足,则第二个条件是回退。我的最终输出应该是这样的

val resuldRDD = RDD[(v_id, inputObject11)]

其中 inputObject11 = inputObject1 + 如果满足条件,则从第二个 RDD 添加 e_id。

所以字段将是

g_id, p_id, e_id, timestamp=t1

【问题讨论】:

不确定您是否可以有条件加入。您可以通过 id 加入,然后根据任何条件进行过滤。 【参考方案1】:

不可能join 操作是按键

https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.rdd.PairRDDFunctions

【讨论】:

以上是关于有条件地加入和映射 2 个 RDD的主要内容,如果未能解决你的问题,请参考以下文章