如何找到给定RDD的a(k,v)的最大值?我尝试了以下操作:
RDD.map(lambda (k,v): (k,v)).takeOrdered(1, key=lambda x: -len(x[1]))
有更好的选择吗?
xqnpmsa81#
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中,其中单词数量作为键,行本身作为值。然后使用map的第一个值(Integer)按降序对相同的值进行排序。这样,rdd的第一个元素具有最大长度。
1条答案
按热度按时间xqnpmsa81#
在这里,我读取了一个文件,并在空间上将其分割,并将其存储在一个Map中,其中单词数量作为键,行本身作为值。然后使用map的第一个值(Integer)按降序对相同的值进行排序。这样,rdd的第一个元素具有最大长度。