【spark】java.io.NotSerializableEx

2019-05-05  本文已影响0人  DuLaGong

本来想模拟一个数据倾斜的实例,以及其各种解决方案,不料遇到一个报错:

报错如下:

Exception in thread "main" org.apache.spark.SparkException: Task not serializable

.........

Caused by: java.io.NotSerializableException: org.apache.spark.unsafe.types.UTF8String$IntWrapper

spark的Task not serializable问题,但是我spark代码中没有使用外部变量,也没有用到实体类,报错的代码如下:

user_rdd.join(record_rdd,record_rdd("uid")===user_rdd("borrower_id"),"left")

.groupBy(user_rdd("regist_date"))

.agg(sum("borrower_id"))

.as("col2")

.show()

就是两个hive表的DataFrame数据集left join后做一个分组聚合操作而已,百思不得其解。

试过各种方案以及网络搜索各种解决方案,发现是版本问题:

我的版本是spark2.2.0的版本,修改maven的pom文件中的spark的版本为2.2.2,重新运行解决。

注意:如果你改成spark2.4.0,对应的scala版本要用2.12,不然会报错:

Exception in thread "main" java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V

参考博文:

https://blog.csdn.net/lsr40/article/details/80166644

https://blog.csdn.net/u010834071/article/details/80506711

上一篇 下一篇

猜你喜欢

热点阅读