如果你看到這個錯誤:
org.apache.spark。火花Exception: Job aborted due to stage failure: Task not serializable: java.io.NotSerializableException: ...
上述錯誤可以當你intialize觸發一個變量在司機(主),然後嚐試使用它的工人。在這種情況下,火花流將嚐試序列化的對象發送到工人,和失敗如果沒有可序列化的對象。考慮下麵的代碼片段:
NotSerializable NotSerializable = new NotSerializable ();JavaRDD <字符串>抽樣= sc.textFile (“/ tmp / myfile”);抽樣。地圖(s - > notSerializable.doSomething (s)) .collect ();
這將引發錯誤。這裏有一些建議來解決這個錯誤:
/ /……現在流程iter});
你好,
你可以使用單例模式來創建一個對象一旦每台機器。這是在維基百科上解釋得很好:
https://en.wikipedia.org/wiki/Singleton_pattern
如果你想返回值,您可以使用mapPartitions轉換而不是forEachPartition行動。