当左侧键为 Option[] 时,Spark left outer join
Spark left outer join when left side key is Option[]
我有
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]))
旁路是什么?
您可以简单地将 rdd2
映射到 RDD[(Option[String], Double)]
:
rdd1.leftOuterJoin(rdd2.map{case (k, v) => (Option(k), v)})
如果 Context
可以使用 Spark SQL 类型表示,那么您可以简单地将两个 RDD 转换为 DataFrames 并加入。 None
映射到 NULLs
所以一切都应该按预期工作。
我有
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]))
旁路是什么?
您可以简单地将 rdd2
映射到 RDD[(Option[String], Double)]
:
rdd1.leftOuterJoin(rdd2.map{case (k, v) => (Option(k), v)})
如果 Context
可以使用 Spark SQL 类型表示,那么您可以简单地将两个 RDD 转换为 DataFrames 并加入。 None
映射到 NULLs
所以一切都应该按预期工作。