Я включил сериализацию крио:
conf.set( "spark.serializer", "org.apache.spark.serializer.KryoSerializer" )
Я хочу убедиться, что пользовательский класс сериализуется с использованием kryo при перетасовке между узлами. Я могу зарегистрировать класс с помощью kryo следующим образом:
conf.registerKryoClasses(Array(classOf[Foo]))
Как я понимаю, это фактически не гарантирует, что используется сериализация kyro; если сериализатор недоступен, kryo вернется к сериализации Java.
Чтобы гарантировать сериализацию крио, я выполнил эту рекомендацию из документации Spark:
conf.set("spark.kryo.registrationRequired", "true")
Но это вызывает выброс IllegalArugmentException ( "Класс не зарегистрирован" ) для группы разных классов, которые я предполагаю, что Spark использует внутренне, например, следующее:
org.apache.spark.util.collection.CompactBuffer
scala.Tuple3
Конечно, мне не нужно вручную регистрировать каждый из этих отдельных классов с помощью kryo? Эти сериализаторы определены в kryo, так есть ли способ автоматически зарегистрировать их все?