转换中的 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()
注意,这将 return 仅记录在 rdd1 和 rdd2 中具有匹配邮政编码的记录。如果你想为 rdd1 中的记录设置一些默认编号,但在 rdd2 中没有相应的邮政编码,请使用 leftOuterJoin insted of join:
rdd1.map({case (name, zipcode) => (zipcode, name)})
.leftOuterJoin(rdd2)
.map({case (zipcode, (name, number)) => (name, number.getOrElse(0))})
.collect()
我有 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()
注意,这将 return 仅记录在 rdd1 和 rdd2 中具有匹配邮政编码的记录。如果你想为 rdd1 中的记录设置一些默认编号,但在 rdd2 中没有相应的邮政编码,请使用 leftOuterJoin insted of join:
rdd1.map({case (name, zipcode) => (zipcode, name)})
.leftOuterJoin(rdd2)
.map({case (zipcode, (name, number)) => (name, number.getOrElse(0))})
.collect()