Pyspark:to_timestamp返回不正确的时间戳值[重复]
Posted
技术标签:
【中文标题】Pyspark:to_timestamp返回不正确的时间戳值[重复]【英文标题】:Pyspark: to_timestamp return incorrect timestamp value [duplicate] 【发布时间】:2021-01-17 08:24:17 【问题描述】:我刚刚学习了一些基本的 pyspark。我试图学习如何使用 to_timestamp 将 StringType
转换为 TimestampType
以下是我的示例数据
data = [(1,'10/06/2019 02:00:00 AM')]
schema = ['id','datetime']
df_test = spark_session.createDataFrame(data=data,schema=schema)
df_test = df_test.withColumn('datetime',f.to_timestamp(f.col('datetime'), 'MM/dd/yyyy KK:mm:ss a'))
我认为它会是什么样子
+---+-------------------+
| id| datetime|
+---+-------------------+
| 1|2019-10-06 02:00:00|
+---+-------------------+
相反,df_test 看起来像这样
+---+-------------------+
| id| datetime|
+---+-------------------+
| 1|2019-10-06 03:00:00|
+---+-------------------+
有人能说明这是怎么发生的吗?
【问题讨论】:
【参考方案1】:我想你在澳大利亚 ;) 这两个时间实际上是相同的(!),因为由于夏令时,时钟在凌晨 2 点提前了一小时。
import pyspark.sql.functions as f
spark.sql("set spark.sql.session.timeZone = AET")
data = [(1,'10/06/2019 01:00:00 AM'), (2,'10/06/2019 01:59:00 AM'),
(3,'10/06/2019 02:00:00 AM'), (4,'10/06/2019 03:00:00 AM')]
schema = ['id','datetime']
df_test = spark.createDataFrame(data=data,schema=schema)
df_test.withColumn('datetime',f.to_timestamp(f.col('datetime'), 'MM/dd/yyyy KK:mm:ss a')).show()
+---+-------------------+
| id| datetime|
+---+-------------------+
| 1|2019-10-06 01:00:00|
| 2|2019-10-06 01:59:00|
| 3|2019-10-06 03:00:00|
| 4|2019-10-06 03:00:00|
+---+-------------------+
【讨论】:
以上是关于Pyspark:to_timestamp返回不正确的时间戳值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Pandas UDF (PySpark) - 不正确的类型错误