正常运行

运行报错

报错信息
java.io.NotSerializableException: java.io.PrintStream
第一种是正常的lambada表达式,第二种是method reference
反编译第二种方法
SparkSession ss = SparkSession.builder().config("spark.sql.catalogImplementation", "hive").master("local[4]").getOrCreate();
JavaRDD var10000 = ss.sql("select * from cs").javaRDD().flatMap((row) -> {
return Lists.newArrayList(new Row[]{row, row}).iterator();
});
PrintStream var10001 = System.out;
var10000.foreach(var10001::println);
ss.stop();
通过反编译可以发现var10000该变量需要序列化到executor端,但是PrintStream并没有实现Serialize接口
博客提及运行存在正常和报错两种情况,介绍了报错信息。还提到两种表达式,一种是正常的Lambda表达式,另一种是Method Reference,并对第二种进行反编译,发现变量需序列化到executor端,但PrintStream未实现Serialize接口。

6607

被折叠的 条评论
为什么被折叠?



