踩坑日记二

Scala中连接数据库:( 含泪史

  •  foreach中报错:Task not serializable

   报错原因:rdd集群有driver和execute两个进程,前面配置了数据库,spark变量可能是在driver进程里,而rdd变化是再execute进程(?大概),所以会报这个错。

  错误样例:

 

   修改方法:

  1.将数据库连接一起放入rdd变化中:[*推荐*]

   2.将rdd变化放在class里面进行,class继承serializable:(不太确定是否是)

 

   3.用foreachpartition:

  优点:数据库连接和关闭可以放在外面

  缺点:排序可能顺序会被打乱,因为是对分区进行排序的()

posted @ 2022-05-31 14:05  gyrce  阅读(39)  评论(0)    收藏  举报