我正在尝试将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)
答案 0 :(得分:1)
可以将SparkSession
的时区配置设置为CST
或CDT
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:08
比UTC
要早2小时。