首页 > 编程知识 正文

phoenix hbase二级索引原理,phoenix本地索引

时间:2023-05-04 18:46:47 阅读:188040 作者:2895

一、CDH5.14集群下Phoenix4.14.0安装及性能对比phoenix/impala/hive

二、CDH6.2中使用parcel离线安装Phoenix5.0.0

三、使用Phoenix映射hbase表创建表和视图

之前提到phoenix实现了hbase的sql接口,并且支持二级索引,本篇内容就介绍一下如何使用Phoenix创建二级索引及使用。

官方文档-二级索引

创建索引

建索引:

CREATE INDEX noah_app ON "kafka_md"."noahgroup_app" ("cf"."MD5"); #必须有列族

删索引:

drop index NOAH_APP ON "kafka_md"."noahgroup_app";

 异步建索引

使用上面的命令建索引的时候会在命令行一直等待,如果想要在后台异步建索引则只需要在命令后加上ASYNC即可:

CREATE INDEX noah_app ON "kafka_md"."noahgroup_app" ("cf"."MD5") ASYNC;

 

超时时间配置

如果Hbase的数据量较多,则在建索引的时候会超时报错,报错后该索引的INDEX_STATE会一直处在BUILDING状态:

java.sql.SQLTimeoutException: Operation timed out.

在CM中hbase的hbase-site.xml的服务端和客户端新增参数然后重启hbase之后即可解决此Error。

<property><name>phoenix.query.timeoutMs</name><value>7200000</value></property> 索引数据长什么样?

建好的索引在phoenix中的INDEX_STATE为ACTIVE状态,在hbase中会以索引列和rowkey列组合作为一个索引表的rowkey。

hbase中的phoenix索引表的数据:将索引列+'x00'+rowkey组成一个新的hbase表,这点就和mysql和oracle类似了,不多赘述。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。