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());
}});