代码之家  ›  专栏  ›  技术社区  ›  Ishan

Spark rdd中case类的瞬态字段变为空

  •  0
  • Ishan  · 技术社区  · 6 年前

    我有一个case类,它接受java类LinkedSparseMatrix(包)的一个实例- no.uib.cipr.matrix.sparse )作为-

    case class A(mat: LinkedSparseMatrix)
    

    当我试图转换 List[LinkedSparseMatrix] TaskNotSerializableException . 所以我宣布这个场是暂时的。但是所有mat字段都变为null,我认为这是由于定义为transient的对象的默认值。

    因此,我尝试将变量定义为lazy,从而将类更改为-

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

    但现在,我还是有点- java.io.NotSerializableException: no.uib.cipr.matrix.sparse.LinkedSparseMatrix -我不明白为什么!

    0 回复  |  直到 6 年前
        1
  •  1
  •   Jasper-M    6 年前

    您可以启用Kryo序列化而不是默认的Java序列化。Kryo可以序列化对象而无需实现 java.io.Serializable .

    推荐文章