二、Phoenix Shell 的使用

1,进入 Phoenix 命令行

(1)执行如下命令进入 phoenix 的终端(启动脚本 sqlline.py 参数是 Zookeeper 节点)

sqlline.py localhost:2181

(2)首次进入 phoenix 终端会自动建立的 phoenix 系统表,我们执行如下命令可以查看当前所有的表:

!table

linux查看hbase命令 phoenix命令行查看hbase表_linux查看hbase命令

 

(3)执行如下命令则可退出 phoenix 的终端:

!exit

2,新建表

(1)执行下面命令创建一个名为 student 的表,如果没有明确定义任何列族,则将一个空键值作为默认列族:

注意:在 phoenix 中,默认情况下,库名,表名,字段名等会自动转换为大写,若要小写,使用双引号,如 "student"。

CREATE TABLE IF NOT EXISTS "student"(
id VARCHAR primary key,
name VARCHAR,          
age VARCHAR);

创建后执行 !table 命令可以看到新创建的表:

linux查看hbase命令 phoenix命令行查看hbase表_SQL_02

在 HBase Shell 中执行 describe "student" 命令查看表信息,可以发现映射过来的表列簇默认是 0:

linux查看hbase命令 phoenix命令行查看hbase表_linux查看hbase命令_03

(2)我们也可以在创建时指定列簇,比如下面我们指定列族为 info(如果所引用的列族不存在,则将创建它们):

CREATE TABLE IF NOT EXISTS "student"(
id VARCHAR primary key,
info.name VARCHAR,         
info.age VARCHAR);

在 HBase Shell 中执行 describe "student" 命令查看表信息,可以发现映射过来的表列簇变成了 info:

linux查看hbase命令 phoenix命令行查看hbase表_sql_04

 

3,删除表

执行如下命令可以删除 studnet 表:

drop table "student";

4,表数据的增删改查

(1)使用 upsert 可以进行数据的插入或者更新:

注意:upsert 相当于 updata 与insert 的结合,当表中的主键不存在就是插入,存在就是更新。

upsert into "student" values('1001','大刘','20');
upsert into "student" values('1002','小星','22');

(2)使用 select 语句可以进行数据的查询:

select * from "student";

linux查看hbase命令 phoenix命令行查看hbase表_sql_05

 

delete from "student" where id='1002';

附:执行 SQL 脚本、导入数据

1,执行 SQL 脚本

(1)在 Phoenix 安装包 examples 目录下有一些官方样例,其中 STOCK_SYMBOL.sql 内容如下:

CREATE TABLE IF NOT EXISTS STOCK_SYMBOL (SYMBOL VARCHAR NOT NULL PRIMARY KEY, COMPANY VARCHAR);
UPSERT INTO STOCK_SYMBOL VALUES ('CRM','SalesForce.com');
SELECT * FROM STOCK_SYMBOL;

(2)我们要执行这个 sql 文件,只需要在执行 sqlline.py 时添加 SQL 文件参数即可:

sqlline.py localhost:2181 STOCK_SYMBOL.sql

(3)可以看到 sql 脚本自动执行成功:

linux查看hbase命令 phoenix命令行查看hbase表_数据_06

 

2,导入数据

(1)如果需要导入数据,我们可以使用 bin/psql.py 加载 CSV 数据或执行 SQL 脚本(其中 -t 后面是表名):

./bin/psql.py -t STOCK_SYMBOL localhost:2181 ./examples/STOCK_SYMBOL.csv

(2)STOCK_SYMBOL.csv 同样是 Phoenix 安装包 examples 目录下的官方样例,其中数据的分隔符是逗号:

linux查看hbase命令 phoenix命令行查看hbase表_sql_07

 

java.sql.SQLException: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled

(4)打开 psql.py 查看对应查找的系统变量是哪个:

linux查看hbase命令 phoenix命令行查看hbase表_linux查看hbase命令_08

(5)然后编辑 /etc/profile,在尾部添加这个系统变量(指向 HBase 的 conf 目录):

linux查看hbase命令 phoenix命令行查看hbase表_sql_09

 (6)然后执行如下命令使配置生效:

source /etc/profile

(7)最后再次执行导入命令,执行成功后查看 STOCK_SYMBOL 表可以看到数据已经插入进来了

linux查看hbase命令 phoenix命令行查看hbase表_数据_10

 

 

早年同窗始相知,三载瞬逝情却萌。年少不知愁滋味,犹读红豆生南国。别离方知相思苦,心田红豆根以生。