apachespark使用javalambda重构键值对

apachespark使用javalambda重构键值对,java,lambda,apache-spark,Java,Lambda,Apache Spark,我使用ApacheSpark,我有一个键值对,它的值是ArrayList,我想将ArrayList中的一个值移到key.Position,然后将键移回ArrayList。有没有办法用lambda表达式实现这一点 在Python中,它是这样的 newMap = sourceMap.map(lambda (key,((value1, value2), value3)) : (value1, (key, value2,value3))) 如何在Java中使用lambdas实现这一点?sourceMa

我使用ApacheSpark,我有一个键值对,它的值是ArrayList,我想将ArrayList中的一个值移到key.Position,然后将键移回ArrayList。有没有办法用lambda表达式实现这一点

在Python中,它是这样的

newMap = sourceMap.map(lambda (key,((value1, value2), value3)) : (value1, (key, value2,value3)))
如何在Java中使用lambdas实现这一点?sourceMap与newMap的类型相同

JavaPairRDD<String, ArrayList<String> newMap = sourceMap.flatMapToPair((a, b) -> ??? )
javapairdd??)

这是我的解决方案

JavaPairRDD<String, ArrayList<String>> newRDD = source.mapToPair( lines -> {

        ArrayList<String> values = new ArrayList<String>();

        // restructure
        values.add(lines._1());
        values.add(lines._2()._1().get(0));
        values.add(lines._2()._1().get(2));
        values.add(lines._2()._2());

        Tuple2<String, ArrayList<String>> tuple = new Tuple2<>(lines._2()._1().get(1), values);

        return tuple;
    });
javapairdd newRDD=source.mapToPair(行->{
ArrayList值=新的ArrayList();
//重组
添加(行._1());
添加(行._2()._1().get(0));
添加(行._2()._1().获取(2));
添加(行._2()._2());
Tuple2 tuple=新的Tuple2(行._2()._1().get(1),值);
返回元组;
});