Spark中的日期时间转换

时间:2016-09-02 16:22:24

标签: scala apache-spark

似乎我无法让date_format工作。使用我知道处理我的数据的格式(见下文)

import org.apache.spark.sql.functions._
dat.withColumn("ts", date_format(dat("timestamp"), "MMM-dd-yyyy hh:mm:ss:SSS a (z)")).select("timestamp", "ts").first

我得到了

res310: org.apache.spark.sql.Row = [Aug-11-2016 09:21:43:749 PM (CEST),null]

阅读文档,我了解date_format应该接受任何SimpleDateFormat。这是对的吗?

我可以让它能够解决以下代码的痛苦:

val timestamp_parser = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss:SSS a (z)")
val udf_timestamp_string_to_long = udf[Long, String]( timestamp_parser.parse(_).getTime() )
val udf_timestamp_long_to_sql_timestamp = udf[Timestamp, Long]( new Timestamp(_) )
dat.withColumn("ts", udf_timestamp_long_to_sql_timestamp(udf_timestamp_string_to_long(dat("timestamp")))).select("timestamp", "ts").first

给出了

res314: org.apache.spark.sql.Row = [Aug-11-2016 09:21:43:749 PM (CEST),2016-08-11 21:21:43.749]

0 个答案:

没有答案