gpt4 book ai didi

apache-spark - 如何阻止 pyspark 中的时间戳删除尾随零

转载 作者:行者123 更新时间:2023-12-02 02:24:14 25 4
gpt4 key购买 nike

我有 Spark 数据帧,其中时间戳以毫秒为单位。

+-----------------------+
|CALC_TS |
+-----------------------+
|2021-01-27 01:35:05.043|
|2021-01-27 01:35:05.043|
|2021-01-27 01:35:05.043|

我想让它像这样显示微秒:

+--------------------------+
|CALC_TS |
+--------------------------+
|2021-01-27 01:35:05.043000|
|2021-01-27 01:35:05.043000|
|2021-01-27 01:35:05.043000|

所以基本上我希望毫秒部分以微秒为单位显示。在上面的示例中,第一个数据帧的 43 毫秒将是 43000 微秒,如秒数据帧所示。

我已经尝试过:

df.withColumn('TIME', to_timestamp('CALC_TS', 'yyyy-MM-dd HH:mm:ss.SSSSSS'))

df.withColumn('TIME', col('CALC_TS').cast("timestamp"))

但是他们给出了相同的结果并去掉了最后 3 个零。有没有办法实现这个目标?

最佳答案

to_timestamp(timestamp_str[,fmt])接受一个字符串并返回一个时间戳(类型)。如果您CALC_TS正如你所说,已经是一个时间戳,你应该使用 df.withColumn('TIME', date_format('CALC_TS','yyyy-MM-dd HH:mm:ss.SSSSSS'))将其格式化为字符串,精度为微秒。来自 Spark reference :

o Fraction: Use one or more (up to 9) contiguous 'S' characters, e,gSSSSSS, to parse and format fraction of second. For parsing, theacceptable fraction length can be [1, the number of contiguous ‘S’].For formatting, the fraction length would be padded to the number ofcontiguous ‘S’ with zeros. Spark supports datetime of micro-of-secondprecision, which has up to 6 significant digits, but can parsenano-of-second with exceeded part truncated.

对于 Spark 2.4,为了使其看起来时间戳字段的精度为微秒,也许您可​​以在格式化时“伪造”尾随零,如下所示:date_format('CALC_TS','yyyy-MM-dd HH:mm:ss.SSS000')

关于apache-spark - 如何阻止 pyspark 中的时间戳删除尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65945976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com