基于Phoenix对HBase建索引

参考:

Phoenix与HBase集成进行数据分析

HBase查询速度慢原因排查

在DBeaver中执行下列语句:

select * from ASSET_NORMAL WHERE ASSET_ID=‘19-1151444153020846080‘;

返回信息:

3d8f2cf978094a47b2f24dea58fa697c    19-1151444153020846080    电脑    1001005    信息设备    1001005002 ……

如下:

在DBeaver中执行下列语句:

select count(*) from ASSET_NORMAL;

返回信息:

10,614

如下:

在DBeaver中执行下列语句:

explain select count(*) from ASSET_NORMAL;

返回信息:

CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER IDX_ASSET_NORMAL
    SERVER FILTER BY FIRST KEY ONLY
    SERVER AGGREGATE INTO SINGLE ROW
CLIENT 200 ROW LIMIT

如下:

在DBeaver中执行下列语句:

explain select * from ASSET_NORMAL WHERE ASSET_ID=‘19-1151444153020846080‘;

返回信息:

CLIENT 1-CHUNK 200 ROWS 177000 BYTES SERIAL 1-WAY ROUND ROBIN RANGE SCAN OVER IDX_ASSET_NORMAL [‘19-1151444153020846080‘]    177000    200    0
    SERVER FILTER BY FIRST KEY ONLY    177000    200    0
    SERVER 200 ROW LIMIT    177000    200    0
CLIENT 200 ROW LIMIT    177000    200    0

如下:

直接通过Bash进行操作,执行下列语句:

select count(*) from ASSET_NORMAL;

耗时0.071s,返回如下信息:

0: jdbc:phoenix:node3:2181:/hbase> select count(*) from ASSET_NORMAL;
+-----------+
| COUNT(1)  |
+-----------+
| 11286     |
+-----------+
1 row selected (0.071 seconds)

执行下列语句:

explain select count(*) from ASSET_NORMAL;

耗时0.03s,返回如下信息:

0: jdbc:phoenix:node3:2181:/hbase> explain select count(*) from ASSET_NORMAL;
+----------------------------------------------------------------+-----------------+----------------+--------------+
|                              PLAN                              | EST_BYTES_READ  | EST_ROWS_READ  | EST_INFO_TS  |
+----------------------------------------------------------------+-----------------+----------------+--------------+
| CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER IDX_ASSET_NORMAL  | null            | null           | null         |
|     SERVER FILTER BY FIRST KEY ONLY                            | null            | null           | null         |
|     SERVER AGGREGATE INTO SINGLE ROW                           | null            | null           | null         |
+----------------------------------------------------------------+-----------------+----------------+--------------+
3 rows selected (0.03 seconds)

执行下列语句:

select * from ASSET_NORMAL WHERE ASSET_ID=‘19-1151444153020846080‘;

耗时0.359s,返回如下信息:

0: jdbc:phoenix:node3:2181:/hbase> select * from ASSET_NORMAL WHERE ASSET_ID=‘19-1151444153020846080‘;
+-----------------------------------+-------------------------+-------------+------------------------+--------------------------+----------------+
|                ID                 |        ASSET_ID         | ASSET_NAME  | ASSET_FIRST_DEGREE_ID  | ASSET_FIRST_DEGREE_NAME  | ASSET_SECOND_D |
+-----------------------------------+-------------------------+-------------+------------------------+--------------------------+----------------+
| 3d8f2cf978094a47b2f24dea58fa697c  | 19-1151444153020846080  | 电脑          | 1001005                | 信息设备                     | 1001005002     |
+-----------------------------------+-------------------------+-------------+------------------------+--------------------------+----------------+
1 row selected (0.359 seconds)

执行下列语句:

explain select * from ASSET_NORMAL WHERE ASSET_ID=‘19-1151444153020846080‘;

耗时0.025s,返回如下信息:

0: jdbc:phoenix:node3:2181:/hbase> explain select * from ASSET_NORMAL WHERE ASSET_ID=‘19-1151444153020846080‘;
+--------------------------------------------------------------------------------------------------------+-----------------+----------------+----+
|                                                  PLAN                                                  | EST_BYTES_READ  | EST_ROWS_READ  | ES |
+--------------------------------------------------------------------------------------------------------+-----------------+----------------+----+
| CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN RANGE SCAN OVER IDX_ASSET_NORMAL [‘19-1151444153020846080‘]  | null            | null           | nu |
|     SERVER FILTER BY FIRST KEY ONLY                                                                    | null            | null           | nu |
+--------------------------------------------------------------------------------------------------------+-----------------+----------------+----+
2 rows selected (0.025 seconds)

如下:

原文地址:https://www.cnblogs.com/ratels/p/11203313.html

时间: 2024-10-11 03:30:30

基于Phoenix对HBase建索引的相关文章

hbase建索引的两种方式

转载自http://blog.csdn.net/ryantotti/article/details/13295325 在二级索引的实现技术上一般有几个方案: 1.      表索引 使用单独的hbase表存储索引数据,业务表的索引列值做为索引表的rowkey,业务表的rowkey做为索引表的qualifier或value. 问题:对数据更新性能影响较大:无法保证一致性:Client查询需要2次RPC(先索引表再数据表). 2.      列索引 与业务表使用相同表,使用单独列族存储索引,用户数据

Spark教程——(4)Spark-shell基于Phoenix访问HBase数据

package statistics import common.util.timeUtil import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.SQLContext import org.apache.spark.sql.functions.{col, count, split} class costMonth { def main(args: Array[String]): Unit =

phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou

环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 表SYNC_BUSINESS_INFO_BYDAY数据库量:990万+ 问题描述: 通过phoenix客户端连接hbase数据库,创建二级索引时,报下面的错误: 0: jdbc:phoenix:host-10-191-5-226> create index SYNC_BUSI

Phoenix on HBase

(一)概要 Apache Phoenix是基于BSD许可开源的一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Apache Phoenix主要特性: 嵌入式的JDBC驱动,实现了大部分的java.sql接口,包括元数据API 可以通过多部行键或是键/值单元对列进行建模 完善的查询支持,可以使用多个谓词以及优化的扫描键 DDL支持:通过CREATE TABLE.DROP TABLE及ALTER TABLE来添加/删除列 版本化的模式仓库:当写入数据时,快照查询会使用恰当

HBase二级索引的设计

摘要 最近做的一个项目涉及到了多条件的组合查询,数据存储用的是HBase,恰恰HBase对于这种场景的查询特别不给力,一般HBase的查询都是通过RowKey(要把多条件组合查询的字段都拼接在RowKey中显然不太可能),或者全表扫描再结合过滤器筛选出目标数据(太低效),所以通过设计HBase的二级索引来解决这个问题 查询需求 多个查询条件构成多维度的组合查询,需要根据不同组合查询出符合查询条件的数据 HBase的局限性 HBase本身只提供基于行键和全表扫描的查询,而行键索引单一,对于多维度的

HBase二级索引与Join

转自:http://www.oschina.net/question/12_32573 二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性.RDBMS支持得比较好,NOSQL阵营也在摸索着符合自身特点的最佳解决方案.这篇文章会以HBase做为对象来探讨如何基于Hbase构建二级索引与实现索引join.文末同时会列出目前已知的包括0.19.3版secondary index, ITHbase, Facebook和官方Coprocessor方案的介绍. 理论目标在HBase中实现

hbase二级索引

二级索引与索引Join是多数业务系统要求存储引擎提供的基本特性,RDBMS早已支持,NOSQL阵营也在摸索着符合自身特点的最佳解决方案.这篇文章会以HBase做为对象来讨论如何基于Hbase构建二级索引与实现索引join.文末同时会列出目前已知的包括0.19.3版secondary index, ITHbase, Facebook方案和官方Coprocessor的介绍. 理论目标在HBase中实现二级索引与索引Join需要考虑三个目标:1,高性能的范围检索.2,数据的低冗余(存储所占的数据量).

(转)HBase二级索引与Join

二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性.RDBMS支持得比较好,NOSQL阵营也在摸索着符合自身特点的最佳解决方案.这篇文章会以HBase做为对象来探讨如何基于Hbase构建二级索引与实现索引join.文末同时会列出目前已知的包括0.19.3版secondary index,?ITHbase, Facebook和官方Coprocessor方案的介绍. 理论目标在HBase中实现二级索引与索引Join需要考虑三个目标:1,高性能的范围检索.2,数据的低冗余(存储所占

基于Solr的HBase多条件查询测试

转自:http://www.cnblogs.com/chenz/articles/3229997.html 背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力.针对HBase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的HBase多条件查询方案进行测试和验证. 原理: 基于Solr的HBase多条件查询原理很简单,将HBas