Это на самом деле нужно, только когда используются объекты , кроме вызова методов непосредственно для них .Например, что-то вроде
val x = someName
rdd.map { ... x ... }
или
object SomeName extends Serializable, SomeTrait { ... }
def f(x: SomeTrait) = ...
rdd.map { ... f(SomeName) ... }
Для "глобальных" object
s, не расширяющих какие-либо классы / черты, это в основном бесполезно, потому что никто никогда не делает то, что показывает первый фрагмент,но это тоже не повредит.Обратите внимание, что Nil
и None
являются примерами второго и они расширяют Serializable
(даже без Spark).