Phoenix-4.14-cdh5.14.2与hbase-1.2.0-cdh5.14.2集成测试

Phoenix介绍:
 针对hbase开发的第三方插件,目前已贡献给Apache,顶级项目  
  Phoenix是构建在HBase上的一个SQL层
  可以使用类似于操作mysql的标准sql语句,作为hbase客户端JDBC的驱动对hbase中的数据进行低延迟的访问
  内部实现为将sql查询语句编译成hbase内部的一系列scan操做
  因为hive关联hbase查询底层为MapReduce,为Phoenix底层查询为hbase的API,故查询速度比hive集成快
   hbase-》hive-》hql-》MapReduce查询等-》速度慢
   hbase-》Phoenix-》sql-》hbase Scan查询(JDBC结果集)-》速度快

 

官网下载 http://phoenix.apache.org/download.html

1、上传解压
   $ tar zxf apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
   $ mv apache-phoenix-4.14.0-cdh5.14.2-bin  phoenix-4.14.0-cdh5.14.2 (可不修改)
  2、将phoenix安装目录下的phoenix-4.14.0-cdh5.14.2-server.jar拷贝到hbase的lib目录下
   $ cp phoenix-4.14.0-cdh5.14.2/phoenix-4.14.0-cdh5.14.2-server.jar hbase-1.2.0-cdh5.14.2/lib/
  3、将phoenix安装目录下的phoenix-core-4.14.0-cdh5.14.2.jar 拷贝到hbase的lib目录下(如果是phoenix 3.x版本的安装除了phoenix-[version]-server.jar需要复制外,同时phoenix-core-[version].jar 也需要复制,但是我们安装的是phoenix 4.x所以phoenix-core-[version].jar 的jar包就不需要复制了
   $ cp phoenix-4.14.0-cdh5.14.2/phoenix-core-4.14.0-cdh5.14.2.jar hbase-1.2.0-cdh5.14.2/lib/
  4、将hbase/conf目录下hbase-site文件覆盖放入phoenix的bin目录下
      $ cp hbase-1.2.0-cdh5.14.2/conf/hbase-site.xml phoenix-4.14.0-cdh5.14.2/bin/
  5、重启hbase进程 
  6、启动phoenix客户端交互命令
    $ bin/sqlline.py zkip:2181
  第一次启动时间相对较长要进行初始化操作创建一些表
  如果报argparse错误:$ sudo yum -y install python-argparse

集成测试:
-》show databases 或 show tables 不支持的,并不与mysql中操作完全一样
-》!help  查看内置命令
-》!tables 查看hbase中与phoenix建立好映射的表
-》通过phoenix客户端创建表
create table user_ph(
id varchar primary key,
name varchar,
password varchar
);

phoenix查看表有没有:


-》hbase shell中通过list查看


 注意:phoenix中的表名和字段名不加双引号则默认都为大写
 加上双引号则区分大小写
 phoenix和RDBMS中一样,有数据类型
-》hbase shell中通过 desc 'USER_PH'
 表列簇默认名称是0,NAME => '0'
-》重新创建,并指定列簇:列 
drop table user_ph;
create table "user_ph"(
"id" varchar primary key,
"info"."name" varchar,
"info"."password" varchar
);

-》添加数据:
 updata+insert结合命令--》upsert,插入数据时表名和列名因为都是小写的所以要加双引号, 值为字符串时只能用单引号引起否则报错,phoenix中创建表时的主键列会默认为hbase表中的rowkey
upsert into "user_ph"("id","info"."name","info"."password") values('001','admin','admin');
upsert into "user_ph"("id","info"."name","info"."password") values('002','admin','admin');
upsert into "user_ph"("id","info"."name","info"."password") values('003','admin','admin');

-》查询数据:
select * from "user_ph";


scan  "user_ph" 
 
-》删除数据:
delete from "user_ph" where "id"='002';

-》在phoenix中的client界面中进行的crud(增删改查)操作与RDBMS的操作大都相同
 
-》退出phonix客户端命令行
!quit

posted @ 2020-01-06 22:43  夜半钟声到客船  阅读(824)  评论(0编辑  收藏  举报