有没有办法在 Apache Phoenix 中使用 TIME ZONE 信息 UPSERT 时间戳?

Posted

技术标签:

【中文标题】有没有办法在 Apache Phoenix 中使用 TIME ZONE 信息 UPSERT 时间戳?【英文标题】:Is there a way to UPSERT a TIMESTAMP with TIME ZONE information in Apache Phoenix? 【发布时间】:2021-10-03 02:19:33 【问题描述】:

我正在尝试使用 PutSQL 处理器从 Nifi UPSERT 进入 Phoenix 表。

假设我的表名为 X,其架构如下所示: 编号 [INT], ts [时间戳]

语句如下:

UPSERT INTO X (id, ts) VALUES (1 , '2021-07-01 10:00:00.000')

问题: 当我看凤凰桌时,我看到:

id ts
1 2021-07-01 08:00:00.000

显然,因为我的 Apache Nifi 或 Phoenix 服务器时间设置为 GMT+02:00,TIMESTAMP 在 UPSERT 期间会发生偏移,因为 Phoenix 认为它必须更正此偏移才能到达 GMT。但是我的时间戳已经是 GMT 时间戳,所以我不想要这个更正。

有没有办法将时区信息附加到 TIMESTAMP 字符串以便 Phoenix 理解它?我在文档中找不到任何内容。

我已经尝试过插入但没有成功:

'2021-07-01 10:00:00.000Z'
'2021-07-01 10:00:00.000+0000'

约束:我不能将我的服务器时区更改为 GMT/UTC(这可能是一个简单的解决方案),因为我不是管理员。

有人可以建议吗?

【问题讨论】:

【参考方案1】:

我找到了解决方案: 如果我 UPSERT 纪元毫秒而不是时间戳字符串,它可以工作。

所以现在的解决方案是:

UPSERT INTO X (id, ts) VALUES (1, 1625133600000)

【讨论】:

以上是关于有没有办法在 Apache Phoenix 中使用 TIME ZONE 信息 UPSERT 时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Phoenix(一)答疑

Node.js和npm phoenix-client软件包与kerberized Apache phoenix连接

2021年大数据HBase:Apache Phoenix的基本介绍

2021年大数据HBase:Apache Phoenix的基本介绍

如何从命令行界面检查 Apache Phoenix 的版本?

HBase集成Phoenix创建二级索引