@@ -88,50 +88,6 @@ class KryoSerializer(conf: SparkConf)
8888 private val useUnsafe = conf.get(KRYO_USE_UNSAFE )
8989 private val usePool = conf.get(KRYO_USE_POOL )
9090
91- // classForName() is expensive in case the class is not found, so we filter the list of
92- // SQL / ML / MLlib classes once and then re-use that filtered list in newInstance() calls.
93- private lazy val loadableClasses : Seq [Class [_]] = {
94- Seq (
95- " org.apache.spark.sql.catalyst.expressions.UnsafeRow" ,
96- " org.apache.spark.sql.catalyst.expressions.UnsafeArrayData" ,
97- " org.apache.spark.sql.catalyst.expressions.UnsafeMapData" ,
98-
99- " org.apache.spark.ml.attribute.Attribute" ,
100- " org.apache.spark.ml.attribute.AttributeGroup" ,
101- " org.apache.spark.ml.attribute.BinaryAttribute" ,
102- " org.apache.spark.ml.attribute.NominalAttribute" ,
103- " org.apache.spark.ml.attribute.NumericAttribute" ,
104-
105- " org.apache.spark.ml.feature.Instance" ,
106- " org.apache.spark.ml.feature.LabeledPoint" ,
107- " org.apache.spark.ml.feature.OffsetInstance" ,
108- " org.apache.spark.ml.linalg.DenseMatrix" ,
109- " org.apache.spark.ml.linalg.DenseVector" ,
110- " org.apache.spark.ml.linalg.Matrix" ,
111- " org.apache.spark.ml.linalg.SparseMatrix" ,
112- " org.apache.spark.ml.linalg.SparseVector" ,
113- " org.apache.spark.ml.linalg.Vector" ,
114- " org.apache.spark.ml.stat.distribution.MultivariateGaussian" ,
115- " org.apache.spark.ml.tree.impl.TreePoint" ,
116- " org.apache.spark.mllib.clustering.VectorWithNorm" ,
117- " org.apache.spark.mllib.linalg.DenseMatrix" ,
118- " org.apache.spark.mllib.linalg.DenseVector" ,
119- " org.apache.spark.mllib.linalg.Matrix" ,
120- " org.apache.spark.mllib.linalg.SparseMatrix" ,
121- " org.apache.spark.mllib.linalg.SparseVector" ,
122- " org.apache.spark.mllib.linalg.Vector" ,
123- " org.apache.spark.mllib.regression.LabeledPoint" ,
124- " org.apache.spark.mllib.stat.distribution.MultivariateGaussian"
125- ).flatMap { name =>
126- try {
127- Some [Class [_]](Utils .classForName(name))
128- } catch {
129- case NonFatal (_) => None // do nothing
130- case _ : NoClassDefFoundError if Utils .isTesting => None // See SPARK-23422.
131- }
132- }
133- }
134-
13591 def newKryoOutput (): KryoOutput =
13692 if (useUnsafe) {
13793 new KryoUnsafeOutput (bufferSize, math.max(bufferSize, maxBufferSize))
@@ -256,7 +212,7 @@ class KryoSerializer(conf: SparkConf)
256212
257213 // We can't load those class directly in order to avoid unnecessary jar dependencies.
258214 // We load them safely, ignore it if the class not found.
259- loadableClasses .foreach { clazz =>
215+ KryoSerializer .loadableSparkClasses .foreach { clazz =>
260216 try {
261217 kryo.register(clazz)
262218 } catch {
@@ -528,6 +484,50 @@ private[serializer] object KryoSerializer {
528484 }
529485 }
530486 )
487+
488+ // classForName() is expensive in case the class is not found, so we filter the list of
489+ // SQL / ML / MLlib classes once and then re-use that filtered list in newInstance() calls.
490+ private lazy val loadableSparkClasses : Seq [Class [_]] = {
491+ Seq (
492+ " org.apache.spark.sql.catalyst.expressions.UnsafeRow" ,
493+ " org.apache.spark.sql.catalyst.expressions.UnsafeArrayData" ,
494+ " org.apache.spark.sql.catalyst.expressions.UnsafeMapData" ,
495+
496+ " org.apache.spark.ml.attribute.Attribute" ,
497+ " org.apache.spark.ml.attribute.AttributeGroup" ,
498+ " org.apache.spark.ml.attribute.BinaryAttribute" ,
499+ " org.apache.spark.ml.attribute.NominalAttribute" ,
500+ " org.apache.spark.ml.attribute.NumericAttribute" ,
501+
502+ " org.apache.spark.ml.feature.Instance" ,
503+ " org.apache.spark.ml.feature.LabeledPoint" ,
504+ " org.apache.spark.ml.feature.OffsetInstance" ,
505+ " org.apache.spark.ml.linalg.DenseMatrix" ,
506+ " org.apache.spark.ml.linalg.DenseVector" ,
507+ " org.apache.spark.ml.linalg.Matrix" ,
508+ " org.apache.spark.ml.linalg.SparseMatrix" ,
509+ " org.apache.spark.ml.linalg.SparseVector" ,
510+ " org.apache.spark.ml.linalg.Vector" ,
511+ " org.apache.spark.ml.stat.distribution.MultivariateGaussian" ,
512+ " org.apache.spark.ml.tree.impl.TreePoint" ,
513+ " org.apache.spark.mllib.clustering.VectorWithNorm" ,
514+ " org.apache.spark.mllib.linalg.DenseMatrix" ,
515+ " org.apache.spark.mllib.linalg.DenseVector" ,
516+ " org.apache.spark.mllib.linalg.Matrix" ,
517+ " org.apache.spark.mllib.linalg.SparseMatrix" ,
518+ " org.apache.spark.mllib.linalg.SparseVector" ,
519+ " org.apache.spark.mllib.linalg.Vector" ,
520+ " org.apache.spark.mllib.regression.LabeledPoint" ,
521+ " org.apache.spark.mllib.stat.distribution.MultivariateGaussian"
522+ ).flatMap { name =>
523+ try {
524+ Some [Class [_]](Utils .classForName(name))
525+ } catch {
526+ case NonFatal (_) => None // do nothing
527+ case _ : NoClassDefFoundError if Utils .isTesting => None // See SPARK-23422.
528+ }
529+ }
530+ }
531531}
532532
533533/**
0 commit comments