将完整时间戳读入数据帧

时间:2017-02-14 02:44:58

标签: scala apache-spark timestamp unix-timestamp

我正在尝试学习Spark,我正在使用data函数读取带有时间戳列的数据框,如下所示:

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

我如何阅读它以便我不会丢失ms,即+------------+ |TIMESTAMPCOL| +------------+ | 1453320306| +------------+ 部分?我尝试使用.999,其中s是SimpleDateFormat,例如“yyyy-MM-dd hh:mm:ss”,没有任何运气。

1 个答案:

答案 0 :(得分: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|
+-----------------------+