java lambda spark_java – Apache Spark Lambda表达式 – 序列化问题

我试图在spark任务中使用lambda表达式,并抛出“

java.lang.IllegalArgumentException:无效的lambda反序列化”异常.当代码如“transform(pRDD-> pRDD.map(t-> t._2))”时抛出此异常.代码片段如下.

JavaPairDStream aggregate = pairRDD.reduceByKey((x,y)->x+y);

JavaDStream con = aggregate.transform(

(Function,JavaRDD>)pRDD-> pRDD.map(

(Function)t->t._2));

JavaPairDStream> & Serializable)pRDD-> pRDD.map(

(Function & Serializable)t->t._2));

以上两个选项没有奏效.好像我将对象“f”作为参数传递而不是lambda表达式“t-> t_.2”.有用.

Function f = new Function(){

@Override

public Integer call(Tuple2 paramT1) throws Exception {

return paramT1._2;

}

};

我可以知道将该函数表示为lambda表达式的正确格式是什么.

public static void main(String[] args) {

Function f = new Function(){

@Override

public Integer call(Tuple2 paramT1) throws Exception {

return paramT1._2;

}

};

JavaStreamingContext ssc = JavaStreamingFactory.getInstance();

JavaReceiverInputDStream lines = ssc.socketTextStream("localhost",9999);

JavaDStream words = lines.flatMap(s->{return Arrays.asList(s.split(" "));});

JavaPairDStream pairRDD = words.mapToPair(x->new Tuple2(x,1));

JavaPairDStreamx+y);

JavaDStream con = aggregate.transform(

(Function>)pRDD-> pRDD.map(

(Function)t->t._2));

//JavaDStream con = aggregate.transform(pRDD-> pRDD.map(f)); It works

con.print();

ssc.start();

ssc.awaitTermination();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值