有条件地加入和映射 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的主要内容,如果未能解决你的问题,请参考以下文章

基于Scala中另一列的值映射RDD列

Talend 中的条件映射

使用 Fluent NHibernate 有条件地将两列映射到一个字段

如何有条件地循环以将标题行映射到数据行

Scala RDD 映射

如何使用 Pyspark 将一个 rdd 映射到另一个?