phoenix查不到数据_Phoenix 映射已存在 HBase 表,查询不到数据

当使用Phoenix映射已存在的HBase表进行查询时,发现无法获取数据。问题出在Phoenix 4.10版本后对列映射的优化。解决方法包括使用Phoenix视图或者禁用列映射规则(可能影响性能)。建议通过创建视图的方式避免影响HBase源数据。
摘要由CSDN通过智能技术生成

问题描述:

phoenix 映射已存在的 hbase 表 demo 时,表映射正常,但是使用 phoenix 查询时,一直查询不到数据。

1、hbase shell 插入数据

create 'test1','i'

put 'test1','1','i:name','zhangsan'

put 'test1','2','i:name','lisi'

put 'test1','1','i:age','15'

put 'test1','2','i:age','2'

hbase(main):006:0> scan 'test1'

ROW COLUMN+CELL

1 column=i:age, timestamp=1523416240312, value=15

1 column=i:name, timestamp=1523416227940, value=zhangsan

2 column=i:age, timestamp=1523416249281, value=2

2 column=i:name, timestamp=1523416234516, value=lisi

2、phoenix 创建表

create table "test1"(

pk VARCHAR PRIMARY KEY

,"i"."name" VARCHAR

,"i"."age" VARCHAR);

3、phoenix 查询,查询不到数据

0: jdbc:phoenix:> select * from "test1";

+-----+-------+------+

| PK | name | age |

+-----+-------+------+

+-----+-------+------+

No rows selected (0.238 seconds)

问题原因:

经过阅读官方文档发现,phoenix 4.10 版本后,对列映射做了优化,采用一套新的机制,不在基于列名方式映射到 hbase。

解决办法:

1、如果只做查询,强烈建议使用 phoenix 视图方式映射,删除视图不影响 hbase 源数据,语法如下:

create view "test1"(

pk VARCHAR PRIMARY KEY

,"i"."name" VARCHAR

,"i"."age" VARCHAR);

2、必须要表映射,需要禁用列映射规则(会降低查询性能),如下:

create table "test1"(

pk VARCHAR PRIMARY KEY

,"i"."name" VARCHAR

,"i"."age" VARCHAR)

column_encoded_bytes=0;

参考:

http://phoenix.apache.org/columnencoding.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值