【发布时间】:2017-06-14 08:06:04
【问题描述】:
我的数据源提供以纳秒为单位的时间戳。理想情况下我想保留这个,但是需要对 TimestampType 的 RFC3339 支持,我不认为它是(或者是它!)
首先有没有办法在 Spark 中做到这一点?我使用的是 2.11-2.1.1(实际使用的是 databricks 运行时 3.0)
现在我当然想保留毫秒(用于快速事件时间排序) - 如果需要,我可以不用 nanos 精度。
val orderPlacedTimestampDF = Seq(
("orderPlacedDate", "2017-06-13T14:23:49.357Z")).toDF("field", "date")
val orderPlacedTimestampConvertedDF =
orderPlacedTimestampDF.select($"field", $"date", unix_timestamp($"date", "yyyy-MM-dd'T'HH:mm:ss.SSS").cast(TimestampType).as("timestamp"))
display(orderPlacedTimestampConvertedDF)
'2017-06-13T14:23:49.357Z' gets converted to '2017-06-13T14:23:49.000+0000'
(注意:如果我将“Z”添加到模式中,我会返回 null!)
任何帮助表示赞赏
注意格式字符串上的“.SSS”后缀。但是,这只是返回与不带 .SSS 的格式字符串相同。
我在这里遗漏了什么,或者有更好的方法来进行这种转换,还是 TimestampType 不支持?
谢谢!
【问题讨论】:
标签: apache-spark apache-spark-sql spark-dataframe