希望按键比较rdds字段,并尝试填充不匹配的数组字段但无法用于循环。
下面的代码,其中for循环注释正在进行第一次现场检查,但我想用for循环来覆盖所有字段比较
任何想法如何使循环工作,以便可以填充a,b中不相等的所有字段?
---a is of String type
---b is of Array[String] type
---c is of Array[String] type
var i=0
val joinedrdd = rdds1.join(rdds2)
val res= joinedrdd.map {
case (a, (b, c)) => (
//for (i <- 0 until (b.length - 1)){
if (b(i).toString != c(i).toString)
{(a, b(i), c(i))}
//}
)
}
答案 0 :(得分:1)
我可能还有其他更有效的方法。但是,如果它们不同,我会zip
内部Array
和map
这些值,如果是这样,则替换返回的值,否则返回值。
jrdd.map {
case (id, (xs, ys)) => (id, xs.zip(ys).map {
case (x, y) if x == y => x // if x = y return x or y
case _ => "random" // if they differ then return random
})
}
你可以看到/测试我做的here。