期望的输出:
Array((h, (None, Some(12))), (a, (Some(2), None)), (b,(Some(5), None)),
(c, (Some(4), None)), (d, (Some(12), None)), (e, (None, Some(2))),
(f, (None, Some(5))), (g, (None, Some(4))))
代码:
val a = sc.parallelize(List(("a",2),("b",5),("c",4),("d",12)))
val b = sc.parallelize(List(("e",2),("f",5),("g",4),("h",12)))
val c = a.map{case(k,v) => (k) -> (Some(v),None)}
val d = b.map{case(k,v) => (k) -> (None,Some(v))}
val e = c.union(d)
在做c.union(d)时我得到了类型不匹配错误。 有人可以帮助,解决这个问题的方法是正确的,还是我需要采取其他方法。
提前致谢。
答案 0 :(得分:2)
这里的问题是,由于您没有在RDD中指定元素的类型,因此scala会尝试推断它们,并使用Type.none
,它在union中与Some[Int]
和{{}}不同{1}}。
要使联合工作,您必须确保数据具有相同的类型。一种方法是确保所有内容都是Some[String]
:
Option[Any]
答案 1 :(得分:1)
只需注释类型:
def PnUcompare(X,Y):
if X == Y:
return True
else:
return False