簡體   English   中英

如何在apache spark中執行Sort JavaPairRDD

[英]How to perform Sort JavaPairRDD in apache spark

我正在從日志文件中獲取 Ip 地址並對其進行計數,現在我想根據其計數值對該 JavaPairRDD 進行排序。 你可以參考下面的代碼。

JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {

        @Override
        public Integer call(Integer v1, Integer v2) throws Exception {
            // TODO Auto-generated method stub
            return v1 + v2;
        }
    });

上面的 JavaPairRDD 將返回 IP 計數,現在我想對其進行排序.. 例如,輸出將是這樣的

(172.16.0.0,125)
(192.168.0.0,12)
(127.168.0.44,92)

第二個值是該特定 ip 的計數。

Spark 不支持基於值的排序。 作為一種解決方法,您可以交換鍵和值對,然后根據鍵進行排序。

檢查這個: https : //issues.apache.org/jira/browse/SPARK-3655

使用以下代碼交換鍵和值:

JavaPairRDD<Integer, String> swapped = counts.mapToPair(new PairFunction<Tuple2<String, Integer>, Integer, String>() {
           @Override
           public Tuple2<Integer, String> call(Tuple2<String, Integer> item) throws Exception {
               return item.swap();
           }

        });

暫無
暫無

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

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