我有以下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
。
答案 0 :(得分:2)
只需使用date_format
和to_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