Phoenix

一、Phoenix的安装

  1. 编译

    1. 修改pom->针对于Apache版本
      <hbase.version>0.98.6-hadoop2</hbase.version>
      <hadoop-two.version>2.5.0</hadoop-two.version>

    2. 针对CDH版本:需要添加CDH源

    3. 解压源码包,进入路径,进行编译
      mvn clean package -DskipTests
    4. 编译完成,在Phoenix-assembly/target目录下会有编译好的包
  2. 解压编译好的包
    tar -zxvf phoenix-4.2.2.tar.gz -C /opt/modules/
  3. 修改配置
    1. 拷贝Phoenix的jar包到hbase的每一台regionserver的lib目录下
      phoenix-4.2.2-client.jar
      phoenix-core-4.2.2.jar
      cp phoenix-4.2.2-client.jar ../hbase-0.98.6-hadoop2/lib/
      cp lib/phoenix-core-4.2.2.jar ../hbase-0.98.6-hadoop2/lib/

      这里写图片描述
    2. 重启hbase集群
    3. 将hbase集群的hbase-site.xml放到Phoenix的bin目录下
      cp ../hbase-0.98.6-hadoop2/conf/hbase-site.xml bin/
      这里写图片描述
  4. 启动Phoenix
    bin/sqlline.py hadoop-senior01.ibeifeng.com:2181

    这里写图片描述

    这里写图片描述

  5. 做hbase表的映射

    1. 大小写:Phoenix默认全部是大写
    2. 这里一定要注意的是表名和列族以及列名需要用双引号括起来,因为HBase是区分大小写的,如果不用双引号括起来的话Phoenix在创建表的时候会自动将小写转换为大写字母,这样HBase中会创建另外一张表.
    3. create table "t5"("ROW" varchar primary key,"info"."name" varchar,"info"."age" varchar, "info"."sex" varchar );

      这里写图片描述

      这里写图片描述


二、phoenix二级索引

如果要启用phoenix的二级索引功能,需要对HMaster以及每一个RegionServer上的hbase-site.xml进行额外的配置。

  1. 首先,在每一个RegionServer的hbase-site.xml里加入如下属性:

    <property> 
    <name>hbase.regionserver.wal.codec</name>   <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value> 
    </property> 
  2. 然后在每一个master的hbase-site.xml里加入如下属性

    <property>
     <name>hbase.master.loadbalancer.class</name>   <value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
    </property>
    
    <property>
      <name>hbase.coprocessor.master.classes</name>
      <value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
    </property>
    
  3. 重启HBase集群

三、创建表

  1. HBase中创建三张表

    create 'call-detail','user','info'
    create 'tel-net-flow','user','info'
    create 'tel-net-detail','user','info'
  2. 插入测试数据
    1. put 'call-detail','1553333666620161221163701','user:name','yihao'
      put 'call-detail','1553333666620161221163701','user:birth','19900711'
      put 'call-detail','1553333666620161221163701','user:sex','male'
      put 'call-detail','1553333666620161221163701','info:addr','shanghai'
      put 'call-detail','1553333666620161221163701','info:callType','callin'
      put 'call-detail','1553333666620161221163701','info:other','17812345678'
      put 'call-detail','1553333666620161221163701','info:duration','90'
      put 'call-detail','1553333666620161221163701','info:telType','civil'
      put 'call-detail','1553333666620161221163701','info:money','1.2'

      这里写图片描述
    2. put 'tel-net-flow','1553333666620161221165312','user:name','yihao'
      put 'tel-net-flow','1553333666620161221165312','user:birth','19900711'
      put 'tel-net-flow','1553333666620161221165312','user:sex','male'
      put 'tel-net-flow','1553333666620161221165312','info:addr','shanghai'
      put 'tel-net-flow','1553333666620161221165312','info:telType','3G'
      put 'tel-net-flow','1553333666620161221165312','info:chargeType','liuliang'
      put 'tel-net-flow','1553333666620161221165312','info:isDirect','true'
      put 'tel-net-flow','1553333666620161221165312','info:totalFlowAmt','234'
      put 'tel-net-flow','1553333666620161221165312','info:telmoney','0.000'

      这里写图片描述
    3. put 'tel-net-detail','1553333666620161221165733','user:name','yihao'
      put 'tel-net-detail','1553333666620161221165733','user:birth','19900711'
      put 'tel-net-detail','1553333666620161221165733','user:sex','male'
      put 'tel-net-detail','1553333666620161221165733','info:buziType','chat'
      put 'tel-net-detail','1553333666620161221165733','info:flowType','WeiChat'
      put 'tel-net-detail','1553333666620161221165733','info:netAddr','223.167.82.210'

      这里写图片描述
  3. phoenix创建HBase映射
    1. CREATE TABLE "call-detail"(
      "ROW" varchar primary key,
      "user"."name" varchar, "user"."birth" varchar, "user"."sex" char(1),
      "info"."addr" varchar, "info"."callType" varchar, "info"."other" varchar, "info"."duration" double,
      "info"."telType" varchar, "info"."money" double);

      这里写图片描述
    2. CREATE TABLE "tel-net-flow"(
      "ROW" varchar primary key,
      "user"."name" varchar, "user"."birth" varchar, "user"."sex" varchar,
      "info"."addr" varchar, "info"."telType" varchar, "info"."chargeType" varchar,
      "info"."isDirect" varchar, "info"."totalFlowAmt" double, "info"."telMoney" double
      );

      这里写图片描述
    3. CREATE TABLE "tel-net-detail"(
      "ROW" varchar primary key,
      "user"."name" varchar, "user"."birth" varchar, "user"."sex" varchar,
      "info"."buziType" varchar, "info"."flowType" varchar, "info"."netAddr" varchar,
      "info"."netName" varchar
      );

      这里写图片描述

四、创建索引:

  1. 覆盖索引

    CREATE INDEX CALLDETAILINDEX ON "call-detail"("info"."callType") INCLUDE("info"."addr")
    explain select * from "call-detail" limit 10;
    explain select "addr" from "call-detail" where "callType"='callin';

    这里写图片描述

  2. 全局索引

    CREATE INDEX call_detail_globalindex on "call-detail"("user"."name");
    explain select "user"."name" from "call-detail" limit 10;
    

    这里写图片描述

  3. 本地索引

    CREATE LOCAL INDEX call_detail_localindex ON "call-detail"("user"."name");

    这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值