首页 > 解决方案 > 当 presto 服务器在 cloudera 6 (CDH6) 上时,为什么时间戳列值从 presto_cli 发生变化?

问题描述

我在CDH6集群上创建了一个兽人文件。在此 orc 文件之上创建了配置单元表。该表也是使用 presto hive 连接器从 presto 查询的。Presto 安装在同一个 CDH6 集群上。从 presto_cli v/s hive_cli 查询数据时会注意到时间差异。hive --orcfiledump 和 hive 查询都将时间戳列值返回为 2021-11-08 15:09:50

hive> select event_time from icampaign_message_history_dm where bintime=1636383600;
OK
**2021-11-08 15:09:50**
Time taken: 0.132 seconds, Fetched: 1 row(s)

但是当 Presto_cli 查询相同的数据时,时间戳列值减少了 5 小时 30 分钟,响应为 2021-11-08 09:39:50.000

presto:icampqe_cdh> select event_time from icampaign_message_history_dm where bintime=1636383600;
       event_time        
-------------------------
 2021-11-08 09:39:50.000 
(1 row)

Presto 版本 0.238,CDH 集群时区为 GMT

请注意,当在CDH5集群上运行相同的 presto 二进制文件 (0.238) 时,使用 hive_cli 和 presto_cli 没有观察到时间差异。

很高兴知道为什么当使用相同的 presto 版本时,通过 presto_cli 的时间戳值仅在 CDH6 集群上发生变化,而不在 CDH5 集群上发生变化。

标签: hivetimestamptimezoneprestocloudera-cdh

解决方案


Presto_cli 查询相同数据时,时间戳列值减少 5 小时 30 分钟

似乎有一个使用 IST 读取的内部类(印度时区偏移量是 UTC+05:30),另一个使用 UTC。Presto 时间语义在很大程度上被破坏了。我推荐你使用 Trino,这是 Presto 的原始创建者制作的分支。

这是一组长期存在的问题,去年在 Trino 中得到了解决,但在 Presto 中仍然存在。如果您对此进行测试,请报告结果!


推荐阅读