java spark报错:Task not serializable

  • 在spark内存计算
JavaPairRDD<String, Integer> results  = listRDD.reduceByKey(new Function2<Integer, Integer, Integer>() {
    @Override
    public Integer call(Integer s1, Integer s2) throws Exception {
        return s1 + s2;
    }
});
  • 遇到错误:Task not serializable
  • 问题解决:
  • 生成serialVersionUID添加到上面代码中。
import java.io.Serializable;

public class X implements Serializable{
	private static final long serialVersionUID = -3175162002464574460L;

}
  • 接口中修改为
import java.io.Serializable;
public interface ITransformation extends Serializable {
……
}
  • 最终代码为
JavaPairRDD<String, Integer> results  = listRDD.reduceByKey(new Function2<Integer, Integer, Integer>() {
    private static final long serialVersionUID = -3175162002464574460L;
    @Override
    public Integer call(Integer s1, Integer s2) throws Exception {
        return s1 + s2;
    }
});
  • 完成问题解决。

你可能感兴趣的:(Spark)