RDDS支持兩種類型的操作:轉換,從現有的創建新的數據集,並行動,其上運行的數據集的計算後的值返回驅動程序。
對於所提出的問題,您應該使用mapToPair
,這是一種轉換,它通過(解壓縮)函數傳遞每個JavaPairRDD元素並返回一個新的JavaPairRDD。
結果RDD上的每個鍵/值條目類型爲Tuple2 <K, V>
。
在此,我用Tuple2<Object, Object>
以鍵/值,也假設你有解壓()功能鍵:
的Java 8:
JavaPairRDD<Object, Object> result = pairRDD.mapToPair(
(Tuple2<Object, Object> pair) -> new Tuple2<Object, Object>(uncompress(pair._1()), pair._2()));
的Java 6/7: (不能避免非蘭布達地獄......)
javaPair.mapToPair(new PairFunction<Tuple2<Object,Object>, Object, Object>() {
@Override
public Tuple2<Object, Object> call(Tuple2<Object, Object> pair) throws Exception {
return new Tuple2<Object, Object>(uncompress(pair._1()), pair._2());
}});