找到给定RDD的(k,v)的最大值,怎么办?
我尝试了以下操作:RDD.map(lambda(k,v):(k,v))。takeOrdered(1,key = lambda x:-len(x [1]))
有更好的选择吗?
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());
在这里,我已经阅读了一个文件,并将其在空间上分割,并将其存储在地图中,单词数作为键,行本身作为值。然后使用map(Integer)的第一个值对它们进行降序排序。这样,rdd的第一个元素的长度最大。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句