【问题标题】:Timezone mismatch between SPARK SQL and CassandraSPARK SQL 和 Cassandra 之间的时区不匹配
【发布时间】:2018-01-24 21:41:39
【问题描述】:

我正在尝试将数据从 Cassandra 加载到 Spark DataFrame,但时间戳列值正在转换为 UTC 时区而不是 EDT

我正在寻找在这两种情况下时区都应为 EDT 的解决方案。

例如:

Cassandra 时间戳:- 16-08-2017 00:00:00(EDT 时区)

查询 spark sql dataframe/tempview 后获得时间戳:- 15-08-2017 20:00:00(4 小时变化,时区为 UTC)

我搜索了很多,发现转换将基于本地时间戳完成,但即使在更改本地时间戳之后,我仍然看到在 SPARK SQL 中修改时区

仅供参考:

卡桑德拉时区:美国东部时间 正在运行 spark 作业的本地时区:EDT

【问题讨论】:

  • Cassandra 使用 UTC 时间存储在时间戳列中。如果您需要输出中的特定时区实例,则必须将 UTC 转换为所需的时区。您可以通过生成的数据框列来做到这一点。

标签: datetime cassandra apache-spark-sql spark-dataframe


【解决方案1】:

Cassandra 默认使用 UTC 时区,但在 cqlshrc 中指定的时区只会在将其显示到控制台时进行更改/类型转换。

在我的情况下,我已将本地时区从 EDT 修改为 UTC 以完成工作,但按照规定,它也可以被设置为所需的时间。

感谢@Uttam Kasundara 触发了完美的点。

【讨论】:

    猜你喜欢
    • 2019-01-29
    • 2013-07-02
    • 2017-01-31
    • 2013-09-19
    • 2017-12-16
    • 2019-01-26
    • 1970-01-01
    • 2016-05-25
    • 2015-01-28
    相关资源
    最近更新 更多