使用Java和Spark的Lambda表达式

使用Java和Spark的Lambda表达式,java,apache-spark,lambda,Java,Apache Spark,Lambda,此代码中带有.filter()的部分 JavaPairRDD<Integer, ?> vals = sc .parallelize(Arrays.asList(10, 15, 0)) .zipWithIndex(); JavaPairRDD<Integer, ?> valsGreaterThan5 = vals .filter((k, v) -> v > 5) .m

此代码中带有.filter()的部分

JavaPairRDD<Integer, ?> vals = sc
            .parallelize(Arrays.asList(10, 15, 0))
            .zipWithIndex();
JavaPairRDD<Integer, ?> valsGreaterThan5 = vals
            .filter((k, v) -> v > 5)
            .map((k, v) -> k);
javapairdd vals=sc
.parallelize(Arrays.asList(10,15,0))
.zipWithIndex();
JavaPairRDD valsgreeaterthan5=VAL
.过滤器((k,v)->v>5)
.map((k,v)->k);
给我一个

Lambda表达式的签名与函数接口方法调用(Tuple2)的签名不匹配


错误。我不明白。我甚至不在我的类型中使用Tuple2。错误的原因是什么?如何修复它?

map
filter
仅获取一个类型为
Tuple2
的参数。它不能以这种方式重组。你可以:

JavaPairRDD<Integer, ?> valsGreaterThan5 = vals
        .filter(kv -> v._2 > 5)
        .map(kv -> k._1);
javapairdd valsgreeaterthan5=vals
.滤波器(千伏->伏2>5)
.地图(千伏->千伏1);
或者更好:

JavaPairRDD<Integer, ?> valsGreaterThan5 = vals
        .filter(kv -> v._2 > 5)
        .keys();
javapairdd valsgreeaterthan5=vals
.滤波器(千伏->伏2>5)
.keys();