Apache spark Apache Spark,找到一个键值对的最大值吗?
对于给定的RDD,如何求a(k,v)的最大值 我尝试了以下方法: 映射(lambda(k,v):(k,v)).takeorded(1,key=lambda x:-len(x[1])) 有更好的选择吗?Apache spark Apache Spark,找到一个键值对的最大值吗?,apache-spark,Apache Spark,对于给定的RDD,如何求a(k,v)的最大值 我尝试了以下方法: 映射(lambda(k,v):(k,v)).takeorded(1,key=lambda x:-len(x[1])) 有更好的选择吗?javarddinput=sc.textFile(“README.md”); JavaRDD<String> input = sc.textFile("README.md"); JavaRDD<Tuple2< Integer,String>> tupleRDD
javarddinput=sc.textFile(“README.md”);
JavaRDD<String> input = sc.textFile("README.md");
JavaRDD<Tuple2< Integer,String>> tupleRDD = input.map(new Function<String, Tuple2<Integer,String>>() {
@Override
public Tuple2<Integer, String> call(String v1) throws Exception {
return new Tuple2< Integer,String>(v1.split(" ").length, v1);
}
});
JavaRDD<Tuple2<Integer,String>> tupleRDD1= tupleRDD.sortBy(new Function<Tuple2<Integer,String>, Integer>() {
@Override
public Integer call(Tuple2<Integer, String> v1) throws Exception {
// TODO Auto-generated method stub
return v1._1;
}
}, false, 1);
System.out.println(tupleRDD1.first());
JavaRDD>tupleRDD=input.map(新函数(){
@凌驾
公共元组2调用(字符串v1)引发异常{
返回新的Tuple2(v1.split(“”).length,v1);
}
});
JavaRDD tuplerd1=tupleRDD.sortBy(新函数(){
@凌驾
公共整数调用(Tuple2 v1)引发异常{
//TODO自动生成的方法存根
返回v1._1;
}
},假,1);
System.out.println(tuplerd1.first());
在这里,我读取了一个文件,并将其在空间上拆分,然后将其存储在一个地图中,其中单词数作为键,行本身作为值。然后使用map的第一个值(整数)按降序对其进行排序。通过这种方式,rdd的第一个元素的长度最高。您是否尝试过在rdd上使用
max
方法?Justin的解决方案很好,而且尽可能短。作为一个更通用的替代方法,您可以只r.reduce(Math.max)
,也就是说,您只需将任意一对值重复替换为它们中的最大值,直到只剩下一个。我没有。是的,这是更好的选择。