新的火花,并试图理解reduceByKey,这是指定接受RDD(K,V)。我不清楚的是,当值是list/tuple时,如何应用这个函数.
在各种映射和筛选操作之后,我的RDD以(Cluster:String, (Unique_ID:String, Count:Int))的形式结束,其中我可以有许多属于同一个集群的元素,例如:
Array((a,(lkn,12)), (a,(hdha,2)), (a,(naa,35)), (b, (cdas,20)) ...)现在,我想使用reduceByKey为每个集群查找计数最高的元素(因此每个集群有一个条目)。在上面的示例中,这将是集群(a,(naa,35)) a。
如果我在reduceByKey和math.max中有一个简单的(键,值)对,我可以知道如何找到每个集群的最大值。但是,当值表示值的列表/元组时,我不明白如何扩展它。
我用错函数了吗?
发布于 2016-11-21 16:46:15
您可以:
rdd.reduceByKey { case (x, y) => if (x._2 > y._2) x else y }这是:
_._1)- Keys for "a": `(a, [(lkn,12), (hdha,2), (naa,35), ...])`
- Keys for "b": `(b, [(cdas,20), ...])`
(x._2 > y._2))来减少每个组中的值,并返回一个具有较高数目的值。https://stackoverflow.com/questions/40725125
复制相似问题