簡體   English   中英

Spark:在JavaPairRDD中找到最大密鑰

[英]Spark: find max key in a JavaPairRDD

我有一些JavaPairRDD,看起來像JavaPairRDD<Integer, Iterable<String>> ,其中IntegerIterable字段中單詞出現的次數。

我想找到與最大鍵值關聯的JavaPairRDD。

JavaRDD max方法的簽名如下:

public static T max(java.util.Comparator<T> comp)

但我不知道如何實現...

使用keys()方法獲取最大值,然后過濾原始RDD:

Integer maxKeys = originalRDD.keys().max ((x, y) -> x-y);

JavaPairRDD<Integer, Iterable<String>> withMaxKeys = originalRDD.filter (x -> x._1.equals(maxKeys))

或僅過濾原始的RDD-確保密鑰是唯一的!

Tuple2<Integer, Iterable<String>> withMaxKeys = originalRDD.max ((x, y) -> x._1 - y._1);

._1表示元組的第一個元素,在本例中為RDD鍵

代替lambda表達式,您可以編寫ie(在第二種情況下):

public class JavaPairRDDTests {

    public static class TupleComparator implements Comparator<Tuple2<Integer, Iterable<String>>>, Serializable {
        @Override
        public int compare(Tuple2<Integer, Iterable<String>> x, Tuple2<Integer, Iterable<String>> y) {
            return Integer.compare(x._1(), y._1());
        }
    }

    public static void main (String[] args) {
        JavaPairRDD<Integer, Iterable<String>> originalRDD = /* ... */;

        Tuple2<Integer, Iterable<String>> withMaxKeys = originalRDD.max(new TupleComparator());
    }

}

這個問題的幫助下寫的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM