繁体   English   中英

org.apache.spark.SparkException:日期功能无法序列化的任务

[英]org.apache.spark.SparkException: Task not serializable for date function

我在Scala的spark 1.6.2中实现了Kryo序列化。 我在下面的getdate方法中得到了"org.apache.spark.SparkException: Task not serializable"

我在地图转换中使用下面的getdate函数来获取日期。

def getdate(s: String,format_ts:String): Option[Date] = s match {
case "" => null
case _ =>
  val format = new SimpleDateFormat(format_ts)

  Try(new Date(format.parse(s).getTime)).toOption


 }

但是,当我在日期列中插入null时,它工作正常。

有人可以帮我吗?kryo序列化需要包含哪些类?

我对Spark的Kryo序列化不太熟悉。 但是根据我的经验,SimpleDateFormat不能通过spark序列化。 SimpleDateFormat类在Java中实现Serializable。 但是当与spark一起使用时,它是不可序列化的(当它解析到hadoop的Executor程序时,该类无法被序列化。)我遇到了同样的错误。 您可以使用LocalDate代替SimpleDateFormat来完成任务。 对我而言,LocalDate在许多情况下都能正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM