我是Spark和Scala的新手,我真的需要一些关于以下RDD转换的帮助:
INPUT (MACADDRESS,向量(列表(TS1,TS2),列表(TS2,TS3),列表.....)
(c8:3a:bv:b1:3a:e0,Vector(List(1472820071, 1472821088), List(1472821088, 1472821429), List(1472821429, 1472824217)))
DESIDED OUTPUT (macAddress,Vector(intvalue,intvalue,...))
(c8:3a:bv:b1:3a:e0,Vector(1472821088-1472820071, 1472821429-1472821088,1472824217-1472821429))
简而言之,我有一个已经按密钥(macAddress)分组的rdd,其中包含配对的值列表。我需要将列表矢量转换为包含从列表计算的配对差异的向量(secondElement-firstElement)。 Vector中配对列表的数量在RDD中是可变的(取决于所考虑的macAddress)
我不知道在这种情况下我必须使用哪种转换。
谢谢
答案 0 :(得分:2)
你可以mapValues:
pop
答案 1 :(得分:0)
根据您的数据类型进行更新
def flattenRDDElements(x:(macAddress,Vector[List[Int]]) ) : (macAddress,Vector[String]) = {
x match {
case (s,y) => (s,y.map(switchListElements))
}
}
def switchListElements(x: List[Int]):String = x match {
case a::b::Nil => b+"-"+a
}
rdd.map(r => flattenRDDElements(r))