我需要使用元组作为键来找到RDD的最大值。 原始RDD定义为: testRDD如下:
TestRDD(3,249345,038.9,1)
TestRDD(3,249345,785.59,2)
TestRDD(3,249345,584.9,3)
TestRDD(3,249345,427.5,4)
TestRDD(3,249345,410.71,5)
我需要根据元组(1,3)找到第二列的最大值 通过执行以下操作,我能够实现它:
val agg_rdd = TestRDD.map(d => ((d.col1,d.col3),(d.col2))).groupByKey()
val max_AggRDD = agg_rdd.map{case ((col1,col3),(col2)) => (col1,col3) -> col2.max}
val ids_maxAggRDD = max_AggRDD.collect.toSet
现在我需要使用ids_maxAggRDD的输出,其id定义为scala.collection.immutable.Set [((String,String),Long)]作为原始testRDD的过滤器。
我似乎无法使用该值来执行此操作。
val Max_RDD = TestRDD.filter(v => ids_maxAggRDD.value.contains(v.col1,v.col3,v.col2)))
答案 0 :(得分:0)
我只需使用不带.value的包就能让它工作。不确定这是否是最好的方法