Yoa*_*oav 3 scala left-join apache-spark rdd
我有
val rdd1 : RDD[(Option[String], (String, Option[Context]))]
Run Code Online (Sandbox Code Playgroud)
和
val rdd2 : RDD[(String,Double)]
Run Code Online (Sandbox Code Playgroud)
现在,我想,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)})
Run Code Online (Sandbox Code Playgroud)
如果Context可以使用Spark SQL类型表示,那么您可以简单地将两个RDD转换为DataFrame并加入.None被映射到NULLs所以一切都应该按预期工作.
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |