Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala RDD如何将一个集合用作另一个RDD的过滤器_Scala_Apache Spark - Fatal编程技术网

Scala RDD如何将一个集合用作另一个RDD的过滤器

Scala RDD如何将一个集合用作另一个RDD的过滤器,scala,apache-spark,Scala,Apache Spark,我需要使用元组作为键来查找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

我需要使用元组作为键来查找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
现在我需要使用id_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)))
  • 我应该把一组最大ID转换成什么吗
  • 有没有更好的方法来实现我想要实现的目标

  • 我只需要使用contains,而不使用.value,就可以让它工作。不确定这是否是最佳方法

    您在Scala
    集合中没有
    。通过
    ids\u maxAggRDD.value
    ,您希望得到什么结果?您想用什么逻辑来计算最大RDD?