org.apache.spark.SparkException:日期函数

时间:2018-02-09 04:53:49

标签: scala apache-spark spark-dataframe

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

我在地图转换中使用以下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


 }

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

有人可以帮助我成为kryo序列化的一部分吗?谢谢

1 个答案:

答案 0 :(得分:0)

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