在 Spark 中使用毫秒格式更正时间戳

哈哈

在 Spark2 中定义包含毫秒的时间戳的正确格式是什么?

val a = "2019-06-12 00:03:37.981005"
to_timestamp(a, "yyyy-MM-dd HH:mm:ss")   // 2019-06-12 00:03:37
to_timestamp(a, "yyyy-MM-dd HH:mm:ss.FF6")   // null
to_timestamp(a, "yyyy-MM-dd HH:mm:ss.FFFFFF")   // null

这就是我想要做的:

df.withColumn("aa", to_timestamp($"a", "yyyy-MM-dd HH:mm:ss.SSSSSS")).show(false)
+--------------------------+----+
|a                         |aa  |
+--------------------------+----+
|2019-06-12 00:03:37.981005|null|
+--------------------------+----+
安德烈·马查多

曾经有过这样的问题。通过降低ms的精度来解决它。不理想但有效。

df.withColumn("tmp", substring($"a",1,23)).withColumn("res", to_timestamp($"tmp", "yyyy-MM-dd HH:mm:ss.SSS")).show()

编辑

OP 指出前一行只是删除了 ms。试试这个:

import org.apache.spark.sql.types.TimestampType

df.withColumn("tmp", substring($"a",1,23))
  .withColumn("res", (
                          unix_timestamp($"tmp", "yyyy-MM-dd HH:mm:ss.SSS") + 
                          substring($"a", -6, 6).cast("float")/1000000
                     ).cast(TimestampType)
             )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spark SQL:将 JSON 格式的毫秒时间戳转换为日期格式

来自分类Dev

Spark DataFrame将字符串格式的毫秒时间戳列转换为以毫秒为单位的人类可读时间

来自分类Dev

更正时间戳脚本..快速Q

来自分类Dev

更正时间戳脚本..快速Q

来自分类Dev

在Spark中解析不同的时间戳格式

来自分类Dev

在Spark Scala中将CDT时间戳转换为UTC格式

来自分类Dev

spark rdd时间戳转换

来自分类Dev

时间戳转换 Spark Scala

来自分类Dev

使用Spark读取Elasticsearch记录时的时间戳无效

来自分类Dev

使用Phoenix-Spark API添加HBase时间戳

来自分类Dev

在Spark中使用日期

来自分类Dev

在Spark Streaming(Spark 2.0)中使用Kafka

来自分类Dev

获取Spark的Streaming窗口时间戳

来自分类Dev

在时间戳标记STUCK上的Spark JoinWithCassandraTable

来自分类Dev

Spark SQL当前时间戳函数

来自分类Dev

spark-shell Unix时间戳转换并将文件保存为其他格式

来自分类Dev

在Spark中使用开窗功能

来自分类Dev

在.fla中使用Spark组件

来自分类Dev

在Spark中使用期货

来自分类Dev

Spark:在Scala中使用mapPartition

来自分类Dev

在Apache Spark中使用R

来自分类Dev

在.fla中使用Spark组件

来自分类Dev

在Spark中使用期货

来自分类Dev

在Spark SQL中使用通配符

来自分类Dev

在Spark中使用分区程序

来自分类Dev

MultilayerPerceptronClassifier (SPARK) 的特征格式

来自分类Dev

Spark Job创建时间

来自分类Dev

使用HBASE的Spark与使用HDFS的Spark

来自分类Dev

使用Scala将字符串转换为Spark的时间戳