我的数据源提供了纳秒的时间戳。理想情况下,我希望保留这一点,但是对TimestampType的RFC3339支持是必需的,但我不认为它是(或者它是!)
首先,有没有办法在Spark中做到这一点?Im使用2.11-2.1.1 (实际上使用databricks runtime 3.0)
现在我当然想保留millis (用于快速事件时间排序)-如果需要,我可以在没有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不支持?
谢谢!
https://stackoverflow.com/questions/44538999
复制相似问题