Spark未序列化问题(Task not Serialize)

spark未序列化问题虽然不难,但资料却不系统,现总结以下:java

问题发生缘由jvm

当spark算子在使用外部变量时,就会发生序列化问题,以下图所示:spa

上述图中算子map会在各个节点运行,属于不一样jvm间数据交换,须要对交换的内容进行序列化。这就是为何须要序列化的缘由。3d

方法blog

1) 序列化类,并使用broadcast广播接口

2) 在算子内调用变量get

序列化类,使用broadcast广播变量,一个不错的方法,优点在于初始化类的时候只须要一次。其使用方法以下:it

 

类须要实现接口,此类由java实现,以下:spark

 

 

方法二,是在内部实现类:ast

若是在算子内须要sparkconf等参数,能够经过 conf =SparkContext.getOrCreate()实现

其余能够在算子内初始化类,缺点是,每一个map都须要初始化类。且不须要序列化额外操做。

实现以下:

相关文章
相关标签/搜索