将完整时间戳读入数据帧
Reading a full timestamp into a dataframe
我正在尝试学习 Spark,我正在使用 unix_timestamp
函数读取带有时间戳列的数据帧,如下所示:
val columnName = "TIMESTAMPCOL"
val sequence = Seq(2016-01-20 12:05:06.999)
val dataframe = {
sequence.toDF(columnName)
}
val typeDataframe = dataframe.withColumn(columnName, org.apache.spark.sql.functions.unix_timestamp($"TIMESTAMPCOL"))
typeDataframe.show
这会产生一个输出:
+------------+
|TIMESTAMPCOL|
+------------+
| 1453320306|
+------------+
我如何阅读它才不会丢失 ms,即 .999
部分?我尝试使用 unix_timestamp(col: Col, s: String)
,其中 s 是 SimpleDateFormat,例如 "yyyy-MM-dd hh:mm:ss",没有任何运气。
要保留毫秒,请使用 "yyyy-MM-dd HH:mm:ss.SSS"
格式。您可以像下面这样使用 date_format
。
val typeDataframe = dataframe.withColumn(columnName, org.apache.spark.sql.functions.date_format($"TIMESTAMPCOL","yyyy-MM-dd HH:mm:ss.SSS"))
typeDataframe.show
这会给你
+-----------------------+
|TIMESTAMPCOL |
+-----------------------+
|2016-01-20 12:05:06:999|
+-----------------------+
我正在尝试学习 Spark,我正在使用 unix_timestamp
函数读取带有时间戳列的数据帧,如下所示:
val columnName = "TIMESTAMPCOL"
val sequence = Seq(2016-01-20 12:05:06.999)
val dataframe = {
sequence.toDF(columnName)
}
val typeDataframe = dataframe.withColumn(columnName, org.apache.spark.sql.functions.unix_timestamp($"TIMESTAMPCOL"))
typeDataframe.show
这会产生一个输出:
+------------+
|TIMESTAMPCOL|
+------------+
| 1453320306|
+------------+
我如何阅读它才不会丢失 ms,即 .999
部分?我尝试使用 unix_timestamp(col: Col, s: String)
,其中 s 是 SimpleDateFormat,例如 "yyyy-MM-dd hh:mm:ss",没有任何运气。
要保留毫秒,请使用 "yyyy-MM-dd HH:mm:ss.SSS"
格式。您可以像下面这样使用 date_format
。
val typeDataframe = dataframe.withColumn(columnName, org.apache.spark.sql.functions.date_format($"TIMESTAMPCOL","yyyy-MM-dd HH:mm:ss.SSS"))
typeDataframe.show
这会给你
+-----------------------+
|TIMESTAMPCOL |
+-----------------------+
|2016-01-20 12:05:06:999|
+-----------------------+