Apache Spark,找到键值对的最大值?

a8jjtwal  于 2023-06-06  发布在  Apache
关注(0)|答案(1)|浏览(142)

如何找到给定RDD的a(k,v)的最大值?
我尝试了以下操作:

RDD.map(lambda (k,v): (k,v)).takeOrdered(1, key=lambda x: -len(x[1]))

有更好的选择吗?

xqnpmsa8

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的第一个元素具有最大长度。

相关问题