踩坑日记二
Scala中连接数据库:( 含泪史)
- foreach中报错:Task not serializable
报错原因:rdd集群有driver和execute两个进程,前面配置了数据库,spark变量可能是在driver进程里,而rdd变化是再execute进程(?大概),所以会报这个错。
错误样例:

修改方法:
1.将数据库连接一起放入rdd变化中:[*推荐*]
2.将rdd变化放在class里面进行,class继承serializable:(不太确定是否是)

3.用foreachpartition:
优点:数据库连接和关闭可以放在外面
缺点:排序可能顺序会被打乱,因为是对分区进行排序的()
浙公网安备 33010602011771号