如何在Spark中更改日期格式?

时间:2018-03-16 12:48:19

标签: scala apache-spark spark-dataframe

我有以下DataFrame:

+----------+-------------------+
| timestamp|            created|
+----------+-------------------+
|1519858893|2018-03-01 00:01:33|
|1519858950|2018-03-01 00:02:30|
|1519859900|2018-03-01 00:18:20|
|1519859900|2018-03-01 00:18:20|

如何正确创建时间戳?

我能够创建timestamp列,这是一个纪元时间戳,但日期不一致:

df.withColumn("timestamp",unix_timestamp($"created"))

例如,1519858893指向2018-02-28

3 个答案:

答案 0 :(得分:2)

只需使用date_formatto_utc_timestamp 内置功能

import org.apache.spark.sql.functions._
df.withColumn("timestamp", to_utc_timestamp(date_format(col("created"), "yyy-MM-dd"), "Asia/Kathmandu"))

答案 1 :(得分:0)

尝试以下代码

df.withColumn("dateColumn", df("timestamp").cast(DateType))

答案 2 :(得分:0)

您可以在此处查看一种解决方案https://stackoverflow.com/a/46595413 要详细说明字符串中具有不同时间戳/日期格式的数据框,可以执行此操作-

compress

注意:-此代码假定数据不包含任何格式的列-> MM-dd-yyyy,MM-dd-yyyy HH:mm:SS