Phoenix创建二级索引及使用

一、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”;

《Phoenix创建二级索引及使用》

 异步建索引

使用上面的命令建索引的时候会在命令行一直等待,如果想要在后台异步建索引则只需要在命令后加上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。

《Phoenix创建二级索引及使用》

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

《Phoenix创建二级索引及使用》

 

    原文作者:王义凯_Rick
    原文地址: https://blog.csdn.net/wsdc0521/article/details/106059177
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞