Pri*_*ala 2 scala apache-spark rdd
我有 2 个我想加入的 RDD,看起来像这样
val a:RDD[(Option[Int],V)]
val q:RDD[(Int,V)]
Run Code Online (Sandbox Code Playgroud)
有什么办法可以对它们进行左外连接?我试过这个,但它不起作用,因为键的类型不同,即Int, Option[Int]
q.leftOuterJoin(a)
Run Code Online (Sandbox Code Playgroud)
小智 5
自然的解决方案是将 Int 转换为 Option[Int] 以便它们具有相同的类型。
跟随你的例子:
val a:RDD[(Option[Int],V)]
val q:RDD[(Int,V)]
q.map{ case (k,v) => (Some(k),v))}.leftOuterJoin(a)
Run Code Online (Sandbox Code Playgroud)
如果你想在输出中恢复 Int 类型,你可以这样做:
q.map{ case (k,v) => (Some(k),v))}.leftOuterJoin(a).map{ case (k,v) => (k.get, v) }
Run Code Online (Sandbox Code Playgroud)
请注意,您可以毫无问题地执行“.get”,因为不可能在那里获得 None 。
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |