使用Java和Spark的Lambda表达式
此代码中带有.filter()的部分使用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
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();