1. 程式人生 > >java spark報錯:Task not serializable

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;
    }
}
);
  • 完成問題解決。