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 ...
随机推荐
- foundation部分学习记录(更正更新中……)
foundation部分学习记录(更新中--) 从FDB的角度看,它对上层只提供有序+事务+KV存储的抽象. 设计原则 模块化分割,尽量细分且模块之间相互解耦 例如事务系统内,其提交(write pa ...
- vetur 和 volar 不要一起装 - vscode插件 已解决
vetur 和 volar 不要一起装 - vscode插件 会有各种稀奇古怪的问题. 解决方案 利用 vscode 工作区 新建工作区 然后全局 将 volar 禁用工作区,起一个新的vue3项目, ...
- 基于ads1292的心率呼吸信号检测解决方案开发阶段总结
前记 在医疗可穿戴领域,ads1292是一个无法绕过去的存在.今年几个项目产品都和这个芯片有关系. 从不了解到熟悉,算是踩了不少坑吧.对每次的项目进行复盘,是我这些年养成的最好的习惯了. ads129 ...
- LinuxKernel 入侵式双向链表的设计,分析,使用
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- clickhouse 安装和远程登录开启
一.Clickhouse的安装 1.添加yum源 yum-config-manager --add-repo http://repo.red-soft.biz/repos/clickhouse/rep ...
- Performance Improvements in .NET 8 -- Exceptions & Reflection & Primitives【翻译】
Exceptions 在 .NET 6 中,ArgumentNullException 增加了一个 ThrowIfNull 方法,我们开始尝试提供"抛出助手".该方法的目的是简洁地 ...
- 【Jmeter】性能测试--EMQ X 压测
一.业务背景 开发人员需要验证 EMQ X 性能参数,我选用了 Jmeter 进行测试,测试其连接数.发布订阅数据指标 二.测试环境搭建 1. Jmeter 2. Jmeter 插件:需要自行从插件管 ...
- awk第一天
awk第一天 1.用awk 打印整个test.txt (以下操作都是用awk工具实现,针对test.txt) awk '{print}' test.txt [root@master ~]# awk ' ...
- JAVAoooooo
class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } p ...
- Orleans - 1 .NET生态构建分布式系统的利器
在当今数字化时代,构建高效.可靠的分布式系统是许多企业和开发团队面临的挑战.微软的 Orleans 框架为解决这些挑战提供了一个强大而简单的解决方案.本文将介绍 Orleans 的核心概念,并通过一个 ...