spark中在driver端实例化的类必须继承Serializable,而executor端的类没有此要求(driver端需要通过网络发到executor中)。
但在excuter中进行实例化会造成内存浪费(一个task实例化一次)。
解决1:将类继承接口写在driver端中。 ( 有不能实现序列化的类)
解决2:写成Object类型,在driver端获取 ,在executor中调用 (同一个excutor中的不同task会使用不同的对象(例如Object Rule,那么打印输出task中的Rule,会发现各不相同),仍有资源浪费的情况)
解决3:写成Object类型,在executor中直接通过类名.方法名使用