从以下内容中,我如何获得具有最高价值的元组?
Array[(String, Int)] = Array((a,30),(b,50),(c,20))
在此示例中,我想要的结果是(b,50)
答案 0 :(得分:5)
您可以使用reduce()
:
val max_tuple = rdd.reduce((acc,value) => {
if(acc._2 < value._2) value else acc})
//max_tuple: (String, Int) = (b,50)
数据强>
val rdd = sc.parallelize(Array(("a",30),("b",50),("c",20)))
答案 1 :(得分:2)
如果您不熟悉,我应该告诉您,您必须尽可能多地使用Dataframe
,与RDD
相比,它们具有很多优势{{1}你可以得到这样的最大值:
Dataframe
这应该有效,至少对我有用。希望这能帮到你
答案 2 :(得分:1)
答案 3 :(得分:0)
reduce()
为我返回错误的结果。还有其他一些选择:
val maxTemp2 = rdd.max()(Ordering[Int].on(x=>x._2))
val maxTemp3 = rdd.sortBy[Int](x=>x._2).take(1)(0)
数据强>
val rdd = sc.parallelize(Array(("a",30),("b",50),("c",20)))
答案 4 :(得分:0)
rdd.reduceByKey((A,B)=&gt;一种+ B).collect.maxBy(_._ 2)
我们可以像这样使用maxBy