Unix时间到pyspark中的日期时间

时间:2019-06-26 17:40:20

标签: python pyspark

我正在尝试将unis_time转换为pyspark(databricks)中的日期时间格式。

样本数据(测试数据)

id       unix_time
169042   1537569848

我创建的脚本是

test_data= test_data.withColumn('end_time', from_utc_timestamp(test_data.unix_time, 'PST'))

我收到以下错误:-

  

由于数据类型不匹配:参数1需要时间戳类型,   但是,“ unix_time”是bigint类型

更新

输出

unix_time = 1537569848

end_time = 2018-09-21 22:44:08(这是UTC时间吗?默认为utc时间是unix时间格式吗?)

end_time_ct = 2018-09-21T22:44:08.000 + 0000(如何将上述时间转换为中心时间?)

我当前的查询

from pyspark.sql.functions import *

test_data= test_data.withColumn('end_time', from_unixtime(test_data.unix_time ,"yyyy-MM-dd HH:mm:ss"))

test_data = test_data.withColumn('end_time_ct', from_utc_timestamp(test_data.end_time ,"CT"))

display(test_data)

1 个答案:

答案 0 :(得分:1)

可以将SparkSession的时区配置设置为CSTCDT

spark.conf.set("spark.sql.session.timeZone", "CST")

test_data = test_data.withColumn(
    'end_time', 
    from_unixtime(test_data.unix_time , 'yyyy-MM-dd HH:mm:ss')
)

from_unixtime返回默认设置的timeZone中的时间戳。 SparkSession,可以通过运行以下命令进行验证:

spark.conf.get('spark.sql.session.timeZone')

我怀疑它的CEST是因为2018-09-21 22:44:08UTC要早2小时。