如何解决将具有 UTC 偏移量的字符串转换为火花时间戳
如何在 spark 中将字符串 2018-03-21 08:15:00 +03:00
存储为 timestamptype
,同时保留 UTC 偏移量?
尝试过
from pyspark.sql.functions import *
df = spark.createDataFrame([("2018-03-21 08:15:00 +03:00",)],["timestamp"])
newDf= df.withColumn("newtimestamp",to_timestamp(col('timestamp'),"yyyy-MM-dd HH:mm:ss XXX")
)
这会打印 newtimestamp
列,其值转换为 UTC 时间,即 2018-03-21 05:15:00
如何将此字符串作为时间戳列存储在保留偏移量的数据帧中,即存储与时间戳相同的字符串或像 2018-03-21 08:15:00 +3000
一样存储
解决方法
您需要使用 date_format
将您从转换中获得的时间戳格式化为所需的模式:
newDf = df.withColumn(
"newtimestamp",to_timestamp(col('timestamp'),"yyyy-MM-dd HH:mm:ss XXX")
).withColumn(
"newtimestamp_formatted",date_format("newtimestamp","yyyy-MM-dd HH:mm:ss Z")
)
newDf.show(truncate=False)
#+--------------------------+-------------------+-------------------------+
#|timestamp |newtimestamp |newtimestamp_formatted |
#+--------------------------+-------------------+-------------------------+
#|2018-03-21 08:15:00 +03:00|2018-03-21 06:15:00|2018-03-21 06:15:00 +0100|
#+--------------------------+-------------------+-------------------------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。