a在将从json文件读取的日期转换为utc格式时遇到了一个奇怪的问题。我是克罗地亚(欧洲时区/萨格勒布)。当我打开带有utc datetime值的json文件(示例)时,根据打开位置的不同,对于相同的代码会得到不同的结果。
例子:
df.select("start").
withColumn("start_zagreb",from_utc_timestamp(to_timestamp(col("start")),"Europe/Zagreb")).
withColumn("start_frankfurt",from_utc_timestamp(to_timestamp(col("start")),"Europe/Frankfurt")).
withColumn("start_paris",from_utc_timestamp(to_timestamp(col("start")),"Europe/Paris")).
withColumn("start_vienna",from_utc_timestamp(to_timestamp(col("start")),"Europe/Vienna")
当我在欧洲aws的jupyter笔记本上运行它时(eu-central-1,这是在法兰克福),我得到了以下结果(除了法兰克福,其他都是正确的):
+------------------------+-------------------+-------------------+-------------------+-------------------+
|start |start_zagreb |start_frankfurt |start_paris |start_vienna |
+------------------------+-------------------+-------------------+-------------------+-------------------+
|2020-08-02T01:45:00.000Z|2020-08-02 03:45:00|2020-08-02 01:45:00|2020-08-02 03:45:00|2020-08-02 03:45:00|
所以所有的时间都是正确的,除了法兰克福的时间。
如果我在本地spark上的笔记本电脑(时区是欧洲/萨格勒布)上运行相同的代码,a将得到以下结果(除了法兰克福以外,所有结果都是错误的):
+------------------------+-------------------+-------------------+-------------------+-------------------+
|start |start_zagreb |start_frankfurt |start_paris |start_vienna |
+------------------------+-------------------+-------------------+-------------------+-------------------+
|2020-08-02T01:55:00.000Z|2020-08-02 05:55:00|2020-08-02 03:55:00|2020-08-02 05:55:00|2020-08-02 05:55:00|
我尝试了from\utc\u timestamp(to\u timestamp(col(“start”))和from\utc\u timestamp(col(“start”)),这没有什么区别。
有人知道这是怎么回事吗?似乎,若我试图将utc转换为我所在区域的本地时间,我会得到错误的结果。。。
spark版本是2.4.6。
暂无答案!
目前还没有任何答案,快来回答吧!