1

我的 HBase 表有包含 bigint 的列。从 Hive 声明的那些 bigint,我是否使用 Hive生成​​了所有 HBase 的 HFiles 以进行批量加载

从 HBase shell 我可以打印该行并查看适当的整数值:

...
00000020-079e-4e9f-800b-e71937a78b5d    column=cf:p_le_id, timestamp=1428571993408, value=1395243843
...

从 Phoenix 我选择该行并看到一个负值。

select "p_le_id" from "bulk_1month" where UUID = '00000020-079e-4e9f-800b-e71937a78b5d';

我尝试了几种在 Phoenix 中声明列的类型。它们都不匹配 HBase 值:

-- BIGINT : -5678131804545731784

-- UNSIGNED INT : 825440565

-- UNSIGNED LONG : 3545240232309044024

-- UNSIGNED_FLOAT : 2.6080447E-9

-- INTEGER : -1.322.043.083

然而,有趣的一点是:HBase 值为 1,395,243,843。显示“更相似”值的 Phoenix 类型是 INTEGER。

提前感谢您的建议!

4

1 回答 1

2

我注意到在对数值列使用 VARCHAR 类型时,我可以读取适当的值。

这很奇怪,因为 source 被声明为 Hive 端的 bigint 类型。

于 2015-04-09T15:54:10.493 回答