java - Spark 任务可序列化异常
问题描述
public static void main(String[] args) {
List<String> inputData = new ArrayList<>();
inputData.add("WARN: Tuesday 4 September 0405");
inputData.add("ERROR: Tuesday 4 September 0408");
inputData.add("FATAL: Wednesday 5 September 1632");
inputData.add("ERROR: Friday 7 September 1854");
inputData.add("WARN: Saturday 8 September 1942");
Logger.getLogger("org.apache").setLevel(Level.WARN);
SparkConf conf = new SparkConf().setAppName("startingSpark").setMaster("local[*]");
JavaSparkContext sc = new JavaSparkContext(conf);
sc.parallelize(inputData)
.flatMap(value -> Arrays.asList(value.split(" ")).iterator())
.filter(word -> word.length() > 1)
// Here comes the exception
.foreach(System.out::println);
sc.close();
}
foreach(s -> System.out.println(s)); --> 工作正常
foreach(System.out::println); --> 线程“主”org.apache.spark.SparkException 中的异常:任务不可序列化
两者都是相同的,后者使用从 java 8 开始的方法引用功能,但它在线程“main”org.apache.spark.SparkException 中产生异常:任务不可序列化,为什么会这样?
解决方案
推荐阅读
- dataframe - Julia:如何获取 DataFrame/Table 的每一列的类型?
- javascript - 为什么 jquery 日期选择器插件不起作用
- python - Python:在 x 秒内没有服务器消息后关闭 TCP 客户端与服务器的连接
- c++ - 是否有标准的 C++ 函数将生成的数组打印为可用于数组初始化的字符串?
- java - 如何在 Java AST 中返回泛型类型
- c++ - 为什么使用 new 创建的对象范围有限?
- javascript - 无法在画布上绘图。可能是什么问题?
- ruby-on-rails - Rails 不记录请求
- python - 如何通过单击按钮创建一个新窗口
- angular - 安排本地警报/计时器