avatar

目录
Phoenix使用

Phoenix使用

Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。

一、安装

  1. 下载 apache-phoenix-4.15.0-HBase-1.4-bin.tar.gz,使用传输工具将下载的tar包上传到hbase集群的master结点中。

  2. tar开,并放到自己想要的路径下

    Code
    $tar -zxvf apache-phoenix-4.15.0-HBase-1.4-bin.tar.gz 
    $sudo mv apache-phoenix-4.15.0-HBase-1.4-bin /soft/phoenix
  3. 添加 phoenix-[version]-server.jar 到所有master和regionserver的lib/下,并重启hbase

    Code
    [wbw@s201 /soft/phoenix]$sudo cp phoenix-4.15.0-HBase-1.4-server.jar /soft/hbase/lib/
    [wbw@s201 /soft/phoenix]$scp -r phoenix-4.15.0-HBase-1.4-server.jar wbw@s202:/soft/hbase/lib/
    [wbw@s201 /soft/phoenix]$scp -r phoenix-4.15.0-HBase-1.4-server.jar wbw@s203:/soft/hbase/lib/
    [wbw@s201 /soft/phoenix]$scp -r phoenix-4.15.0-HBase-1.4-server.jar wbw@s204:/soft/hbase/lib/

    $stop-hbase.sh
    $start-hbase.sh

二、命令行使用

2.1 进入命令行

进入phoenix的bin目,录执行$./sqlline.py master 其中的master为Zookeeper所在节点的主机名。

Code
[wbw@s201 /soft/phoenix/bin]$./sqlline.py s202

2.2 !tables

自动生成的Phoenix系统表。

avatar

2.3 !help

帮助

2.4 !exit

退出

三、语法

官方语法:http://phoenix.apache.org/language/index.html

注意:无论列名还是表名有大小写区分,若为小写需要用双引号,否则默认转大写。

3.1 建表

sql
create table "test"(
"Row" INTEGER PRIMARY KEY,
"cf1"."name" VARCHAR,
"cf1"."sex" VARCHAR,
"cf2"."age" VARCHAR,
"cf2"."address" VARCHAR
);

命令行显示:

Code
0: jdbc:phoenix:s202> create table "test"(
. . . . . . . . . . > "Row" INTEGER PRIMARY KEY,
. . . . . . . . . . > "cf1"."name" VARCHAR,
. . . . . . . . . . > "cf1"."sex" VARCHAR,
. . . . . . . . . . > "cf2"."age" VARCHAR,
. . . . . . . . . . > "cf2"."address" VARCHAR
. . . . . . . . . . > );
No rows affected (3.456 seconds)

我们打开hbase shell查看一下:可以看到有很多的系统表以及刚创建的test表

Code
hbase(main):004:0> list_namespace_tables 'default'
TABLE
SYSTEM.CATALOG
SYSTEM.CHILD_LINK
SYSTEM.FUNCTION
SYSTEM.LOG
SYSTEM.MUTEX
SYSTEM.SEQUENCE
SYSTEM.STATS
SYSTEM.TASK
test

查看test表信息

Code
hbase(main):005:0> desc 'test'
Table test is ENABLED
test, {TABLE_ATTRIBUTES => {coprocessor$1 => '|org.apache.phoenix.coprocessor.ScanRegionObserver|805306366|', coproce
ssor$2 => '|org.apache.phoenix.coprocessor.UngroupedAggregateRegionObserver|805306366|', coprocessor$3 => '|org.apach
e.phoenix.coprocessor.GroupedAggregateRegionObserver|805306366|', coprocessor$4 => '|org.apache.phoenix.coprocessor.S
erverCachingEndpointImpl|805306366|', coprocessor$5 => '|org.apache.phoenix.hbase.index.IndexRegionObserver|805306366
|org.apache.hadoop.hbase.index.codec.class=org.apache.phoenix.index.PhoenixIndexCodec,index.builder=org.apache.phoeni
x.index.PhoenixIndexBuilder'}
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf1', BLOOMFILTER => 'NONE', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLO
CK_ENCODING => 'FAST_DIFF', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCK
SIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'cf2', BLOOMFILTER => 'NONE', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLO
CK_ENCODING => 'FAST_DIFF', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCK
SIZE => '65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.1690 seconds

3.2 添加(更新)数据

注意:太坑了!这里VALUES里面的字符串,需要用 单引号 !不能用 双引号

Code
UPSERT INTO "test"("Row","cf1"."name","cf1"."sex","cf2"."age","cf2"."address") VALUES(1,'tom','male','18','USA');

查看数据:

Code
0: jdbc:phoenix:s202> select * from "test";
+------+-------+-------+------+----------+
| Row | name | sex | age | address |
+------+-------+-------+------+----------+
| 1 | tom | male | 18 | USA |
+------+-------+-------+------+----------+
1 row selected (0.035 seconds)
0: jdbc:phoenix:s202>

利用hbase shell查看:

Code
hbase(main):006:0> scan 'test'
ROW COLUMN+CELL
\x80\x00\x00\x01 column=cf1:\x00\x00\x00\x00, timestamp=1586705443984, value=x
\x80\x00\x00\x01 column=cf1:\x80\x0B, timestamp=1586705443984, value=tom
\x80\x00\x00\x01 column=cf1:\x80\x0C, timestamp=1586705443984, value=male
\x80\x00\x00\x01 column=cf2:\x80\x0D, timestamp=1586705443984, value=18
\x80\x00\x00\x01 column=cf2:\x80\x0E, timestamp=1586705443984, value=USA
1 row(s) in 0.2330 seconds

3.3 删除数据

Code
0: jdbc:phoenix:s202> DELETE FROM "test" WHERE "Row" = 1;

查看结果:

Code
0: jdbc:phoenix:s202> select * from "test";
+------+-------+------+------+----------+
| Row | name | sex | age | address |
+------+-------+------+------+----------+
+------+-------+------+------+----------+
No rows selected (0.023 seconds)

四、安装SQuirrel客户端

SQuirreL 客户端是基于java安装,是一个可视化工具。

步骤

  1. 下载 squirrel-sql-4.0.0-standard.jar

  2. 打开cmd,运行jar

    Code
    D:\开发安装包\大数据系列软件>java -jar squirrel-sql-4.0.0-standard.jar
  3. 安装引导

    avatar

  4. 根据需要安装数据库插件(当然我全装了,免得以后麻烦)

    avatar

  5. 开始菜单中,找到客户端程序

    avatar

  6. 配置SQuirrel

    • 添加phoenix服务器安装目录下的phoenix-[version]-client.jar(即phoenix-4.15.0-HBase-1.4-client.jar)到squirrel-sql安装目录lib/下(重启一下客户端)

    • 添加驱动

      URL :jdbc:phoenix:yourHost

      Driverclass : org.apache.phoenix.jdbc.PhoenixDriver

![avatar](/postImages/squirrel5.png)

![avatar](/postImages/squirrel6.png)
  • 添加别名

    avatar

  • 然后点击确定,查看我们创建的表

    avatar

  1. 开始编写SQL语句

    avatar

文章作者: IT小王
文章链接: https://wangbowen.cn/2020/04/12/Phoenix%E4%BD%BF%E7%94%A8/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT小王

评论