Я пытаюсь преобразовать дату UTC в дату с местным часовым поясом (используя страну) с помощью PySpark.У меня есть страна в виде строки, а дата в качестве временной отметки
Итак, ввод:
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())
ТогдаЯ использую его в функции, которая подает искру:
data = data.withColumn("date", convert_date_udf(data["date"], data["country"]))
Я получил следующую ошибку:
TypeError: аргумент tzinfo должен быть None или подкласса tzinfo, а не type 'str '
Ожидаемый вывод - это дата с тем же форматом
Как было проверено на python, функции _convert_date_spark_ работают, но в pyspark это не работает
Не могли бы вы помочь мне найти решение для этого?
Спасибо