正常运行
运行报错
报错信息
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接口