В Spark RDD временные поля класса case становятся пустыми - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть класс дел, который принимает экземпляр класса java LinkedSparseMatrix (пакет - no.uib.cipr.matrix.sparse) как -

case class A(mat: LinkedSparseMatrix)

Когда я пытаюсь преобразовать List[LinkedSparseMatrix] в Spark RDD, это бросает TaskNotSerializableException. Поэтому я объявляю поле как переходное. Но тогда все поля mat становятся нулевыми, что, я думаю, связано со значением по умолчанию для объектов, определенных как переходные.

Итак, я попытался определить переменную как lazy и таким образом изменил свой класс на -

class A (m: LinkedSparseMatrix) extends Serializable {
    @transient lazy val mat = m
    // some other code
}

Но теперь я все еще получаю - java.io.NotSerializableException: no.uib.cipr.matrix.sparse.LinkedSparseMatrix - что я не понимаю почему!

Есть ли какое-то решение для этого? Заранее спасибо.

1 Ответ

1 голос
/ 08 апреля 2020

Вы можете включить сериализацию Kryo вместо стандартной Java сериализации. Kryo может сериализовать объекты без реализации java.io.Serializable.

...