gpt4 book ai didi

scala - Spark SQL 未正确转换时区

转载 作者:行者123 更新时间:2023-12-04 03:57:13 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Spark Strutured Streaming automatically converts timestamp to local time

(4 个回答)


2年前关闭。




使用 Scala 2.10.4 和 spark 1.5.1 和 spark 1.6

sqlContext.sql(
"""
|select id,
|to_date(from_utc_timestamp(from_unixtime(at), 'US/Pacific')),
|from_utc_timestamp(from_unixtime(at), 'US/Pacific'),
|from_unixtime(at),
|to_date(from_unixtime(at)),
| at
|from events
| limit 100
""".stripMargin).collect().foreach(println)

Spark-提交选项: --driver-java-options '-Duser.timezone=US/Pacific'
结果:
[56d2a9573bc4b5c38453eae7,2016-02-28,2016-02-27 16:01:27.0,2016-02-28 08:01:27,2016-02-28,1456646487]
[56d2aa1bfd2460183a571762,2016-02-28,2016-02-27 16:04:43.0,2016-02-28 08:04:43,2016-02-28,1456646683]
[56d2aaa9eb63bbb63456d5b5,2016-02-28,2016-02-27 16:07:05.0,2016-02-28 08:07:05,2016-02-28,1456646825]
[56d2aab15a21fa5f4c4f42a7,2016-02-28,2016-02-27 16:07:13.0,2016-02-28 08:07:13,2016-02-28,1456646833]
[56d2aac8aeeee48b74531af0,2016-02-28,2016-02-27 16:07:36.0,2016-02-28 08:07:36,2016-02-28,1456646856]
[56d2ab1d87fd3f4f72567788,2016-02-28,2016-02-27 16:09:01.0,2016-02-28 08:09:01,2016-02-28,1456646941]

美国/太平洋的时间应该是 2016-02-28 00:01:27 等,但它是如何减去“8”小时两次的

最佳答案

阅读一段时间后得出以下结论:

  • Spark-Sql 不支持日期时间,也不支持时区
  • 使用时间戳是唯一的解决方案
  • from_unixtime(at)正确解析纪元时间,只是将其打印为字符串会因时区而改变它。可以安全地假设 from_unixtime将正确转换它(尽管打印它可能会显示不同的结果)
  • from_utc_timestamp会将时间戳移动(不仅仅是转换)到该时区,在这种情况下,它将从 (-08:00)
  • 减去 8 小时的时间
  • 打印 sql 结果会混淆与时区参数相关的时间
  • 关于scala - Spark SQL 未正确转换时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761586/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com