我是Apache Spark的初学者。我想用下面的代码
将两个RDD过滤到结果RDD中def runSpark(stList:List[SubStTime],icList:List[IcTemp]): Unit ={
val conf = new SparkConf().setAppName("OD").setMaster("local[*]")
val sc = new SparkContext(conf)
val st = sc.parallelize(stList).map(st => ((st.productId,st.routeNo),st)).groupByKey()
val ic = sc.parallelize(icList).map(ic => ((ic.productId,ic.routeNo),ic)).groupByKey()
//TODO
//val result = st.join(ic).mapValues( )
sc.stop()
}
这是我想做的事情
List[ST] ->map ->Map(Key,st) ->groupByKey ->Map(Key,List[st])
List[IC] ->map ->Map(Key,ic) ->groupByKey ->Map(Key,List[ic])
STRDD join ICRDD get Map(Key,(List[st],List[ic]))
我有一个函数比较listST和listIC得到List [result]结果包含SubStTime和IcTemp信息
def calcIcSt(st:List[SubStTime],ic:List[IcTemp]): List[result]
我不知道如何使用mapvalues或其他方式来获取我的结果
由于
答案 0 :(得分:0)
val result = st.join(ic).mapValues( x => calcIcSt(x._1,x._2) )