gpt4 book ai didi

python - 在 PySpark 中使用微秒时间戳

转载 作者:行者123 更新时间:2023-12-04 12:25:38 26 4
gpt4 key购买 nike

我有一个具有以下时间格式的 pyspark 数据框 20190111-08:15:45.275753 .我想将其转换为保持微秒粒度的时间戳格式。但是,似乎很难保持微秒,因为 pyspark 中的所有时间转换都会产生秒?

你知道如何做到这一点吗?请注意,将其转换为 Pandas 等将不起作用,因为数据集很大,所以我需要一种有效的方法来做到这一点。我如何在下面执行此操作的示例

time_df = spark.createDataFrame([('20150408-01:12:04.275753',)], ['dt'])
res = time_df.withColumn("time", unix_timestamp(col("dt"), \
format='yyyyMMdd-HH:mm:ss.000').alias("time"))
res.show(5, False)

最佳答案

我在 pyspark 中使用 to_utc_timestamp 函数找到了解决此问题的方法,但并不完全确定这是否是最有效的,尽管它似乎可以在大约 1 亿行数据上正常工作。如果您的时间戳字符串如下所示,您可以避免使用 regex_replace -
1997-02-28 10:30:40.897748

 from pyspark.sql.functions import regexp_replace, to_utc_timestamp

df = spark.createDataFrame([('19970228-10:30:40.897748',)], ['new_t'])
df = df.withColumn('t', regexp_replace('new_t', '^(.{4})(.{2})(.{2})-', '$1-$2-$3 '))
df = df.withColumn("time", to_utc_timestamp(df.t, "UTC").alias('t'))
df.show(5,False)
print(df.dtypes)

关于python - 在 PySpark 中使用微秒时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54232494/

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