zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

2200W条数据测试phoenix查询性能

性能 查询 Phoenix
2023-09-27 14:19:45 时间

版本

hbase 1.3.5
phoenix 4.14.2-hbase 1.3

简介

这里的数据来源于网络,直接下载的用户电影打分数据,原数据集有2700W条,这里为了rowkey不重复,我将timestamp作为rowkey,最终获取到了2200W条数据

索引

这里一会儿要用上二级索引,所以这边先介绍一下,由于hbase中只能围绕rowkey设计来提高性能,但是我们引入了phoenix,可以将hbase和phoenix做关联表和关联视图,就可以引入二级索引了,效率确实提升很多

hbase配置

要打开二级索引,hbase-site.xml中需要打开配置

<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>

异步构建索引

由于2200W数据量还是蛮大的,直接构建出错的概率高达100%,毕竟我本人就构建失败了,所以这里推荐异步构建的方式

create index rating_index_user_item_local on RATINGLOCAL("info"."userId","info"."movieId") include ("info"."rating") async;

执行上边的语句之后会在phoenix中生成一个索引,但是并没有什么用,可以相当于只声明了一个变量,我们还得给它赋值,需要再执行下边的语句

hbase org.apache.phoenix.mapreduce.index.IndexTool --data-table RATINGLOCAL --index-table RATING_INDEX_USER_ITEM_LOCAL --output-path ASYNC_IDX_LOCAL

这里异步构建会启动mapreduce,等着任务结束,没有报错,就说明成功了

测试结果

测试过程就不详细介绍了,直接上结果

查询类型返回数据(条)耗时
count140s
单条件,非rowkey字段1040s
单条件,rowkey字段100.2s
单条件,非rowkey字段,全局索引100.3s
单条件,非rowkey字段,本地索引100.02s
单条件,非rowkey字段,,全局索引4k25s
单条件,非rowkey字段,本地索引4k18s