Spark未序列化問題(Task not Serialize)

spark未序列化問題雖然不難,但資料卻不繫統,現總結以下:java

問題發生緣由jvm

當spark算子在使用外部變量時,就會發生序列化問題,以下圖所示:spa

上述圖中算子map會在各個節點運行,屬於不一樣jvm間數據交換,須要對交換的內容進行序列化。這就是爲何須要序列化的緣由。blog

方法接口

1) 序列化類,並使用broadcast廣播get

2) 在算子內調用變量it

序列化類,使用broadcast廣播變量,一個不錯的方法,優點在於初始化類的時候只須要一次。其使用方法以下:spark

 

類須要實現接口,此類由java實現,以下:ast

 

 

方法二,是在內部實現類:變量

若是在算子內須要sparkconf等參數,能夠經過 conf =SparkContext.getOrCreate()實現

其餘能夠在算子內初始化類,缺點是,每一個map都須要初始化類。且不須要序列化額外操做。

實現以下:

相關文章
相關標籤/搜索