http://stackoverflow.com/quest…
In case of using Java API you should avoid anonymous class when passing to the mapping function closure. Instead of doing map( new Function) you need a class that extends your function and pass that to the map(..) See: https://yanago.wordpress.com/2…
http://www.bubuko.com/infodeta…,这个没有直接作用,但是阐述有助于理解
出现“org.apache.spark.SparkException: Task not serializable”这个错误,一般是因为在map、filter等的参数使用了外部的变量,但是这个变量不能序列化。特别是当引用了某个类(经常是当前类)的成员函数或变量时,会导致这个类的所有成员(整个类)都需要支持序列化。解决这个问题最常用的方法有:
如果可以,将依赖的变量放到map、filter等的参数内部定义。这样就可以使用不支持序列化的类;
如果可以,将依赖的变量独立放到一个小的class中,让这个class支持序列化;这样做可以减少网络传输量,提高效率;
如果可以,将被依赖的类中不能序列化的部分使用transient关键字修饰,告诉编译器它不需要序列化。
将引用的类做成可序列化的。
以下这两个没试过。。
—————
2016-6-18 15:37:50