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

时间:2015-06-21 05:53:38

标签: apache-spark

找到给定RDD的(k,v)的最大值,如何?

我尝试了以下内容: RDD.map(lambda(k,v):( k,v))。takeOrdered(1,key = lambda x:-len(x [1]))

有更好的选择吗?

1 个答案:

答案 0 :(得分: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的第一个元素的长度最长。