Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.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 指定值元素上的ReduceByKey_Scala_Apache Spark - Fatal编程技术网

Scala 指定值元素上的ReduceByKey

Scala 指定值元素上的ReduceByKey,scala,apache-spark,Scala,Apache Spark,刚接触Spark并试图理解被指定接受RDD[(K,V)]的reduceByKey。我不清楚的是,当值是列表/元组时,如何应用此函数 在各种映射和筛选操作之后,我的RDD以(Cluster:String,(Unique_ID:String,Count:Int))的形式结束,其中我可以拥有属于同一集群的许多元素,例如: Array((a,(lkn,12)), (a,(hdha,2)), (a,(naa,35)), (b, (cdas,20)) ...) 现在我想使用reduceByKey为每个集

刚接触Spark并试图理解被指定接受RDD[(K,V)]的reduceByKey。我不清楚的是,当值是列表/元组时,如何应用此函数

在各种映射和筛选操作之后,我的RDD以
(Cluster:String,(Unique_ID:String,Count:Int))
的形式结束,其中我可以拥有属于同一集群的许多元素,例如:

 Array((a,(lkn,12)), (a,(hdha,2)), (a,(naa,35)), (b, (cdas,20)) ...)
现在我想使用
reduceByKey
为每个集群查找计数最高的元素(因此每个集群一个条目)。在上面的例子中,对于集群
a
,这将是
(a,(naa,35))

如果使用
reduceByKey
math.max
的简单(键、值)对,我可以找出如何找到每个集群的最大值。但当值表示值的列表/元组时,我不理解如何扩展它

我在这里使用了错误的功能吗?

您可以:

rdd.reduceByKey { case (x, y) => if (x._2 > y._2) x else y }
这:

  • 以逻辑方式将数据划分为键定义的组(
    。\u 1

    • “a”的键:
      (a,[(lkn,12),(hdha,2),(naa,35),…])
    • “b”的键:
      (b,[(cdas,20),…])
  • 通过比较值的第二个元素(
    (x.\u 2>y.\u 2)
    )来减少每组中的值,并返回一个数值较大的值


你能像在中一样使用maxBy吗?@C4stor他们正在使用一个没有maxBy的
RDD
OP,它似乎被
reduceBy
的一般机制和如何在集合中使用lamdas弄糊涂了——解释你的代码片段或提供一个资源来解释它是如何工作的可能很有用谢谢,我想我现在明白了。@LostInOverflow看起来很棒