当左侧键是选项[]

时间:2015-12-22 14:48:47

标签: scala apache-spark left-join rdd

我有

val rdd1 :  RDD[(Option[String], (String, Option[Context]))]

val rdd2 : RDD[(String,Double)]

现在,我想rdd1.leftOuterJoin(rdd2),但我当然不能因为Option[String]String不同。

连接操作的基本原理是,如果rdd1的键包含一些值,我想有一个额外的信息。所需的输出类型为:RDD[(Options[String],((String, Option[Context]),Option[Double]))

旁路是什么?

1 个答案:

答案 0 :(得分:5)

您只需将rdd2映射到RDD[(Option[String], Double)]

即可
rdd1.leftOuterJoin(rdd2.map{case (k, v) => (Option(k), v)})

如果可以使用Spark SQL类型表示Context,那么您只需将两个RDD转换为DataFrame并加入即可。 None映射到NULLs,因此一切都应该按预期工作。