Я сталкиваюсь с проблемой «убей крота» со многими классами, требующими kryo
регистрации. Есть ли регистрация по умолчанию для общих классов spark
, которая может помочь?
Вот список классов, которые мне пришлось добавить до сих пор — и конца этому не видно:
conf.registerKryoClasses(Array(classOf[Row]))
conf.registerKryoClasses(Array(classOf[InternalRow]))
conf.registerKryoClasses(Array(classOf[Array[InternalRow]]))
conf.registerKryoClasses(Array(classOf[scala.reflect.ClassTag$$anon$1]))
conf.registerKryoClasses(Array(classOf[org.apache.spark.sql.catalyst.expressions.UnsafeRow]))
conf.registerKryoClasses(Array(classOf[Array[org.apache.spark.sql.types.StructType]]))
conf.registerKryoClasses(Array(classOf[org.apache.spark.sql.types.StructType]))
На самом деле это не ответ, а частичное объяснение поведения. Был какой-то старый код, который заставлял kryo
быть конкретным:
val conf: SparkConf = new SparkConf()
.set("spark.kryo.registrationRequired", "true")
Я удалил эту строку, и тогда жалобы на «отсутствие регистрации» волшебным образом исчезли.