正在加入rdd leftouterjoin-错误:类型不匹配

798qvoo8  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(390)

尝试用leftouterjoin连接两个不同大小的RDD。我已经用其他类似的RDD处理了这个问题,但是由于某种原因,我现在遇到了这个错误:

type mismatch;
[error]  found   : org.apache.spark.rdd.RDD[(Int, Int, Double, Double, AnyVal)]
[error]  required: org.apache.spark.rdd.RDD[(Int, ?)]

箭头指向对象userscaleback(具有“found”error的结构):

val userProdItemScale = itemAverages.leftOuterJoin(userScaleBack)

正如您所看到的,这个对象包含5个元组和5个元组,它们的计数分别为1650和80000。最左边元素中的所有值都在两个对象之间共享,因此?-值应该连接到较大对象中leftouterjoin匹配的所有位置。对象的内容如下所示:

userScaleBack
(1053,451,2.7362637362637363,0.011609034023077685,2.2637362637362637)
(466,451,2.7362637362637363,0.052013404418021464,2.2637362637362637)

itemAverages
(1053,3.473684210526316)
(466,3.4390243902439024)
fjnneemd

fjnneemd1#

你需要改变你的类型 userScaleBackRDD[(Int, ?)] ,即具有两个元素的元组的rdd。你可以用 keyBy 为此:

val userProdItemScale = itemAverages.leftOuterJoin(userScaleBack.keyBy(_._1))

相关问题