2016-04-22 9 views
10

tarihinde UDF Görev Serializable değil ben org.apache.spark.SparkException: Task not serializable olsun. Bu veri çerçevesinin herhangi bir sorunu yok.Kıvılcım: Ben Spark 1.4.1 aşağıdaki yürütmeye çalıştığınızda DataFrame

Tamsayılar için benzer UDF'lere sahibim ve sorunsuz çalışıyorlar. Ancak, zaman damgası olan bir sorun gibi görünüyor. documentation'a göre, java.sql.TimeStamp, Serializable uygular, bu yüzden sorun değil. Aynısı, here görüldüğü gibi SimpleDateFormat için de geçerlidir.

Bu, sorunlara neden olan UDF'nin olduğuna inanıyorum. Ancak, ne ve nasıl düzeltileceğinden emin değilim.

izinin ilgili bölümü:

Caused by: java.io.NotSerializableException: ... 
Serialization stack: 
     - object not serializable (class: ..., value: [email protected]) 
     - field (class: ...$ConversionUtils$$anonfun$3, name: $outer, type: class ...$ConversionUtils$) 
     - object (class ...$ConversionUtils$$anonfun$3, <function1>) 
     - field (class: org.apache.spark.sql.catalyst.expressions.ScalaUdf$$anonfun$2, name: func$2, type: interface scala.Function1) 
     - object (class org.apache.spark.sql.catalyst.expressions.ScalaUdf$$anonfun$2, <function1>) 
     - field (class: org.apache.spark.sql.catalyst.expressions.ScalaUdf, name: f, type: interface scala.Function1) 
     - object (class org.apache.spark.sql.catalyst.expressions.ScalaUdf, scalaUDF(ts_str#2683)) 
     - field (class: org.apache.spark.sql.catalyst.expressions.Alias, name: child, type: class org.apache.spark.sql.catalyst.expressions.Expression) 
     - object (class org.apache.spark.sql.catalyst.expressions.Alias, scalaUDF(ts_str#2683) AS ts#7146) 
     - element of array (index: 35) 
     - array (class [Ljava.lang.Object;, size 36) 
     - field (class: scala.collection.mutable.ArrayBuffer, name: array, type: class [Ljava.lang.Object;) 
     - object (class scala.collection.mutable.ArrayBuffer, 

cevap

14

Dene:

object ConversionUtils extends Serializable { 
    ... 
} 
+3

Adam, şimdi çok aptal hissediyorum ... teşekkürler! – Ian

+12

Cevabımı kabul ettiğinizde sizi daha iyi hissettirecek ';-)' –

+0

Önemli değil. Ancak bu soruyu ve yanıtı burada görmek için daha iyi hissetmemi sağladı. Yukarı oy, teşekkürler! –