1

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

这是我的 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);

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

怎么了?

4

2 回答 2

0

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

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

于 2015-03-12T04:28:59.607 回答
0

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

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

hbase shell中,数据如下所示,您应该使用 UNSIGNED_INT 映射为所描述的数据类型

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
)
于 2017-06-24T09:37:08.290 回答