[英]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.