我正在尝试用pyspark将UTC日期转换为本地时区(使用国家/地区)的日期。
我把国家作为字符串,日期作为时间戳
所以输入是:
date = Timestamp('2016-11-18 01:45:55') # type is pandas._libs.tslibs.timestamps.Timestamp
country = "FR" # Type is string
import pytz
import pandas as pd
def convert_date_spark(date, country):
timezone = pytz.country_timezones(country)[0]
local_time = date.replace(tzinfo = pytz.utc).astimezone(timezone)
date, time = local_time.date(), local_time.time()
return pd.Timestamp.combine(date, time)
# Then i'm creating an UDF to give it to spark
convert_date_udf = udf(lambda x, y : convert_date_spark(x, y), TimestampType())
然后我把它用于给Spark供电的功能:
data = data.withColumn("date", convert_date_udf(data["date"], data["country"]))
我有以下错误:
类型错误:TZINFO参数必须是NONE或TZINFO子类,而不是类型“str”
预期输出是具有相同格式的日期
正如用python测试的那样,convert-date-spark函数可以工作,但这在pyspark中不起作用。
你能帮我找到解决办法吗?
谢谢