[英]RDD lookup inside a transformation
我有2个配对的RDD,如下所示
RDD1包含名称作为键,邮政编码包含值:
RDD1-> RDD((ashley,20171),(yash,33613),(evan,40217))
RDD2包含邮政编码作为密钥,并包含一些随机数作为值:
RDD2-> RDD((20171,235523),(33613,345345345),(40189,44355217),(40122,2345235),(40127,232323424))
我需要用RDD2中的相应值替换RDD1中的邮政编码。 所以输出将是
RDD3-> RDD((ashley,235523),(yash,345345345),(evan,232323424))
我尝试使用如下所示的RDD查找方法来执行此操作,但出现异常,说RDD转换不能在另一个RDD转换中执行
val rdd3 = rdd1.map( x => (x._1, rdd2.lookup(x._2)(0)) )
Yon可以通过邮政编码简单地加入2个RDD:
rdd1.map({case (name, zipcode) => (zipcode, name)})
.join(rdd2)
.map({case (zipcode, (name, number)) => (name, number)})
.collect()
请注意,这将仅返回在rdd1和rdd2中具有匹配邮政编码的记录。 如果你想设置一些默认的数字在RDD1集的记录,不具有相应的RDD2邮编,使用leftOuterJoin insted的加盟 :
rdd1.map({case (name, zipcode) => (zipcode, name)})
.leftOuterJoin(rdd2)
.map({case (zipcode, (name, number)) => (name, number.getOrElse(0))})
.collect()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.