我有一個spark java程序,其中帶有mapValues步驟的groupByKey已完成,並返回一個PairRDD,其值爲所有輸入rdd值的Iterable
。 我已經讀過,用mapValues代替groupByKey處的reduceByKey會帶來性能上的提升,但我不知道如何在這裏應用reduceByKey
來解決我的問題。如何使用reduceByKey替換groupByKey以作爲Spark java中的Iterable值返回?
具體而言,我有一個輸入對RDD,其類型爲Tuple5
。在groupByKey和mapValues轉換之後,我需要獲得一個Key-Value對RDD,其中的值需要是輸入值的可迭代。
JavaPairRDD<Long,Tuple5<...>> inputRDD;
...
...
...
JavaPairRDD<Long, Iterable<Tuple5<...>>> groupedRDD = inputRDD
.groupByKey()
.mapValues(
new Function<Iterable<Tuple5<...>>,Iterable<Tuple5<...>>>() {
@Override
public Iterable<Tuple5<...>> call(
Iterable<Tuple5<...>> v1)
throws Exception {
/*
Some steps here..
*/
return mappedValue;
}
});
有沒有辦法讓我能得到使用reduceByKey
上述轉型?
這裏有些步驟是什麼?你需要一個邏輯來減少它。 – philantrovert
在'mapValues'函數中,我實際上是根據'Tuple5'中的一個鍵對每個值進行排序。我認爲這裏沒有關係,這就是爲什麼我沒有包含它們。 – Vishnu
_我已經讀過,用mapValues代替groupByKey中的reduceByKey會帶來性能增益_ - 你看錯了。 – zero323