繁体   English   中英

转换内的RDD查找

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM