Hbase和Phoenix无法映射整数

时间:2015-03-11 16:52:14

标签: hadoop hbase phoenix

我正在尝试使用phoenix映射hbase表,但结果表在具有整数值的列中给出null值。

这是我的hbase表

create 'foo2', {NAME => 'cf', VERSIONS => 5}, {NAME => 'cn'}
put 'foo2', '1' , 'cf:ID', '1'
put 'foo2', '1' , 'cf:c1', 'a'
put 'foo2', '1' , 'cf:c2', 'b'
put 'foo2', '1' , 'cn:idFoo3', 1

put 'foo2', '2' , 'cf:ID', '2'
put 'foo2', '2' , 'cf:c1', 'c'
put 'foo2', '2' , 'cf:c2', 'd'
put 'foo2', '2' , 'cn:idFoo3', 2

这是我的凤凰映射

create view "foo2" (ID INTEGER primary key, "cf"."c1" VARCHAR, "cf"."c2" VARCHAR, "cn"."idFoo3" INTEGER);

用squirrel打开表我有ID列的空值和idFoo3值的错误

出了什么问题?

2 个答案:

答案 0 :(得分:0)

您正在将'cn:idFoo3'写为字符串,其值为“1”和“2”。类似的推理适用于cf:ID。 HBase shell将值作为 String

我建议您使用Phoenix将数据插入Phoenix表。此外,Phoenix序列化格式与HBase略有不同。

答案 1 :(得分:0)

我认为在 hbase shell 中,您的 put 日期是字符串默认值。 您应该使用Apache Phoenix的API将数据写入Phoenix表 比如

put.addColumn("i".getBytes(), "count".getBytes(), Bytes.toBytes(sum));

并且在 hbase shell 中,数据如下所示,您应该使用UNSIGNED_INT映射为datatypes所描述的内容。

hbase(main):030:0> scan 'wordcount'
ROW                             COLUMN+CELL                                                                                
 Apache                         column=i:_0, timestamp=1498293255970, value=                                               
 Apache                         column=i:count, timestamp=1498293255970, value=\x00\x00\x00\x01   

我的映射sql就像这样

create  table "wordcount"(
    pk VARCHAR PRIMARY KEY
    ,"i"."count" UNSIGNED_INT
)