空值左外加入Spark

时间:2015-12-07 20:58:16

标签: scala join apache-spark

我有两个RDD并获得了左连接

左连接p1.leftOuterJoin(p2)结果如下:

Array[((String, String), (Int, Option[Int]))] = 
Array(((1001-150329-002-0-04624,5060567),(1,None)), ((1002-141105-008-0-01934,10145500),(1,None)), ((1013-150324-009-0-02270,15750046),(1,None)), ((1005-150814-005-0-05885,5060656),(1,Some(1))), ((1009-150318-004-0-02537,5060583),(1,None)))

我想将所有None替换为0并获取一个干净的数据集,如:

Array(((1001-150329-002-0-04624,5060567),0), ((1002-141105-008-0-01934,10145500),0), ((1013-150324-009-0-02270,15750046),0), ((1005-150814-005-0-05885,5060656),1)), ((1009-150318-004-0-02537,5060583),0))

基本上将所有(1,None)替换为0,将(1,Some(1))替换为1

1 个答案:

答案 0 :(得分:0)

如果您在OptionSome 0时查找None的值,我会使用.map和{{1}来实现}}:

.getOrElse

结果与预期结果匹配:

a.map { case (k, (_, o)) => (k, o.getOrElse(0)) }