【问题标题】:Reading a full timestamp into a dataframe将完整的时间戳读入数据帧
【发布时间】:2017-02-15 11:07:04
【问题描述】:

我正在尝试学习 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”,但没有任何运气。

【问题讨论】:

标签: scala apache-spark timestamp unix-timestamp


【解决方案1】:

要保留毫秒,请使用"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|
+-----------------------+

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 2023-02-07
    • 2022-01-19
    • 2018-02-17
    • 2019-06-22
    • 1970-01-01
    • 2021-07-31
    • 2020-03-31
    相关资源
    最近更新 更多