Phoenix 时区问题
最近在测试flink从trino查询数据插入到phoenix5的功能,发现一个时间的问题:

明明插入的时间是 '1940-06-01',查询出来的时间会少一天,同样的 Timestamp 也会自动少掉 8个小时,详细原因参考 Phoenix关于时区的处理方式说明。但是文章中阿里的已经处理,但是社区版的仍然有问题,好在社区版本的也有了对应的升级包PHOENIX-6623 ,把phoenix 5.14的版本编译好后,升级上去,打开 phoenix.query.applyTimeZoneDisplacement=true,但是经过测试大部分时间已经能够正常的显示,仍然有一些时间存在问题,

其中的原因是因为 phoenix 采用的 org.joda.time 工具包,存的时间是按照GMT时区存的数据,对于夏令时的处理存在问题,详细可以参照 消失了的那些天——Joda中的夏令时。对于特殊的几个时间 1940-06-01、1941-03-16、1986-05-04、1987-04-12、1988-04-10、1989-04-16、1990-04-15、1991-04-14 的时间夏令时的偏移量是按照9小时来处理的,正常的时间按照8个小时来做处理,通过时区的转换 ,这种正好是夏令时多1个小时的就会显示少1一天。目前社区应该没有解决特殊的夏令时的显示。
目前的解决方案:升级到phoenix 5.14版本,打开phoenix.query.applyTimeZoneDisplacement=true,Timestamp格式是可以正常显示,date 类型数据仍然存在一点问题,查询的客户端使用 sqlline-thin 客户端以及QueryServer JDBC,sqlline 的客户端to_char显示的是GMT时区的时间,sqlline-thin to_char显示的是 GMT+8 的时间,date 类型的数据通过 SUBSTR(to_char(date),1,10) 来解决显示问题,如果不存在这几个夏令时时间,就可以直接查询原表
sqlline:

sqlline-thin:

另外:
5.14版本缺少 QueryServer的可以参考 关于Phoenix5.X 安装包不包含QueryServer服务问题_phoenix-hbase5.x(适配phoenix-queryserver)_Jason_yan0527的博客-CSDN博客,需要自行编译
Phoenix 时区问题的更多相关文章
- BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览
一.引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库, ...
- Python时区转换
最近工作中遇到了一个问题:我的server和client不是在一个时区,server时区是EDT,即美国东部时区,client,就是我自己的电脑,时区是中国标准时区,东八区.处于测试需要,我需要向se ...
- Android时区及语言代码
1. 设置默认时区 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai\ 注:搜索“persist ...
- Android中的常见时区
方法: private void printTimeZone(){ String[] ids= TimeZone.getAvailableIDs(); for (int i = 0; i < i ...
- 我的Android进阶之旅------>Android 设置默认语言、默认时区
1. 设置默认时区 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai\ 注:搜索“persist.sys.timez ...
- GMT与Etc/GMT地区信息的时区转换
GMT 地区信息的时区 在将来的版本中可能不再支持以下左面一列中的地区信息的时区.可能从 /usr/share/lib/zoneinfo 删除这些文件.左列中的地区信息的时区用右列中对等的时区来替换. ...
- 解决 .NET Core 在 Linux 下的时区问题
环境 # dotnet --info .NET Core SDK (reflecting any global.json): Version: Commit: 8a7ff6789d Runtime E ...
- Java8获取当前时间、新的时间日期类如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类
下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java ...
- python 通过pytz模块进行时区的转换,获取指定时区的时间
import pytz import time import datetime print(pytz.country_timezones('cn')) # 查询中国所拥有的时区 print(pytz. ...
- PHP 5 时区
PHP 5 时区 PHP 支持的时区 下面是 PHP 支持的时区的完整列表,这些对一些 PHP 日期函数很有用. 非洲 美洲 南极洲 北冰洋 亚洲 大西洋 大洋洲 欧洲 印度洋 太平洋 非洲 Afri ...
随机推荐
- linux下几种快速清空文件内容的方法
[root@iamzken ~] : > filename [root@iamzken ~] > filename [root@iamzken ~] echo "" & ...
- Linux快速入门(八)效率工具(SSH)
环境 (1)Kali(源主机),IP:10.211.55.4/24 (2)Ubuntu(目标主机),IP:10.211.55.5/24 SSH OpenSSH用于在远程系统上安全的运行Shell,假设 ...
- 记录--form 表单恢复初始数据
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 form 表单恢复初始数据 在现代的 Web 开发中,表单是不可或缺的组件之一.用户可以通过表单输入和提交数据,而开发者则需要对这些数据进 ...
- Android 接收微信、QQ其他应用打开,第三方分享
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在AndroidManifest.xml注册ACTION事件 <activity android:name="com.te ...
- rnacos版本更新为 v0.1.5
rnacos是一个用 rust重新实现的nacos. rnacos比java实现的nacos更轻量.快速.稳定:合适在开发.测试.受资限服务等环境平替nacos服务使用. rnacos v0.1.5 ...
- 慎用django orm的update_or_create方法
公司一个线上招聘项目,后端采用Django开发,数据库使用MySQL.最近一次线上招聘会活动,因短时间大量用户涌入,被吐槽服务响应时间过长.后端和运维人员经排查,定位到MySQL数据库有死锁 根据错误 ...
- KingbaseES V8R6 索引膨胀
索引膨胀 对于索引,随着业务不断的增删改,会造成膨胀,尤其Btree索引,也会涉及索引分裂.合并等,导致索引访问效率降低.维护成本增加.另外,索引页的复用与HEAP PAGE不一样,因为索引的内容是有 ...
- arch linux安装并简单配置zsh
1.安装zsh sudo pacman -S zsh 2.设置默认zsh 列出所有已安装shell chsh -l 要为您的用户设置一个默认值 chsh -s /full/path/to/shell ...
- Jetty的http2模块
启用http2模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=http2 命令的输出,如下: INFO : http2 initial ...
- 使用OHOS SDK构建libxml2
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://gitlab.gnome.org/GNOME/ ...