Apache phoenix命令的基本使用
概述
Phoenix是HBase的客户端实现,对外提供标准化的SQL接口,内部将SQL解析转换为HBase API接口调用HBase,并将HBase返回结果重新编排生成标准的JDBC结果集呈现。本文从以下几个方法介绍Phoenix的基本使用:
sqlline命令行工具使用;
bulkload工具使用;
Phoenix语法FAQ;
Phoenix常用配置项;
sqlline命令行工具使用
【怎么进入】
安装Phoenix后,直接调用sqlline.py命令即可进入到sqlline命令行客户端。
【有哪些命令】
所有sqlline命令都是以!开头,在sqlline客户端中输入!然后tab即可看到所能使用的一些命令提示。
autocommit <on/off>
【作用】设置是否自动提交,默认为on。
【例子】
columns <table name>
【作用】展示表中所有列信息。
【例子】
commit
【作用】当autocommit为off时,通过commit命令提交事务。
【例子】
describe <table name>
【作用】展示表信息。
【例子】
dropall
【作用】删除库中所有用户表。
history
【作用】展示操作历史
indexes <table name>
【作用】展示指定表所包含的二级索引信息。
【例子】
outputformat <table/vertical/xmlattr/xmlelements/csv>
【作用】设置数据展示格式,默认为table格式。
【例子】
table |
|
vertical |
|
xmlattr |
|
xmlelements |
|
csv |
primarykeys <table name>
【作用】展示指定表的主键信息。
【例子】
quit
【作用】退出客户端。
tables
【作用】展示库中所有表。
bulkload工具使用
psql.py
【适用场景】
由于psql是将原始数据转换为插入语句执行,所以仅适用于保存在本地的小量原始数据。
【如何使用】
psql.py –t <table name> data.csv
【参数说明】
-t |
需要导入数据的表名(必填项) |
-d |
原始文件列间分隔符,默认逗号(可选项) |
-h |
列名,逗号分隔,默认为导入表中字段名(可选项) |
CsvBulkLoadTool
【适用场景】
该工具使用MR实现,适用于保存在HDFS的原始数据。
【如何使用】
hbase org.apache.phoenix.mapreduce.CsvBulkLoadTool –t <table> -i <input>
【参数说明】
-i |
原始数据路径,支持多个,逗号分隔(HDFS)(必填项) |
-t |
需要导入的表名(必填项) |
-c |
需要导入的列名,逗号分隔(可选项) |
-d |
原始数据列间分隔符,默认逗号(可选项) |
-g |
是否忽略错误行(可选项) |
-it |
指定需要导入的二级索引表,默认为该表的所有二级索引表(可选项) |
-o |
中间临时hfile路径(可选项) |
-s |
需要导入的表的schema名(可选项) |
Phoenix语法FAQ
问:如何指定列族名?
答:create table test_table (key1 bigint not null primary key, f.c1 varchar);
类似上述语句,使用列族名.列名的形式建列即可指定列族。
问:如何指定列族属性?
答:create table test_table (key1 bigint not null primary key, f1.c1 varchar) COMPRESSION='SNAPPY', DATA_BLOCK_ENCODING='NONE';
类似上述语句,在建表语句后面直接添加属性值即可。
问:如何在建表时预分区?
答:create table test(k1 bigint not null primary key, f.c1 varchar) split on(1,2,3,4,5);
类似上述语句,在建表语句后面使用split on指定预分区信息。
问:如何建带有组合主键的表?
答:create table test(key1 bigint not null, key varchar, c1 char(1), c2 date constraint pk primary key(key1, key2));
类似上述语句,使用constraint pk primary key设定组合主键。
问:如果已有HBase表,但想用Phoenix管理该表?
答:可以使用Phoenix建一张同名表进行管理,但是该表需要满足以下要求:
1、 所有字段只能定义为字符串类型(char/varchar);
2、 组合主键的情况下,主键字段只能定义为定长字符串类型(char);
3、 Phoenix表token默认全大写,如果HBase表名/列族名/列名为小写,建表时可用双引号括起来以表示大小写敏感。
问:从何获取一个查询的查询计划?
答:在查询语句前加上explain即可获取查询计划。类似explain select * from test;
问:如何建立视图?
答:create view my_view select * from test where c1 > 1;
类似上述语句,使用create view语句创建对应视图。
问:如何建立二级索引?
答:创建全局覆盖索引,类似语句:create index my_index on test(c1) include(c2, c3);
创建本地索引,类似这样的语句:create local my_local on test(c1);
问:如何插入日期类字段?
答:upsert into test values(1, to_date(‘2016-02-25’, ‘yyyy-MM-dd’));
使用类似上述语句中的to_date函数,第二个入参为指定的日期格式。
Phoenix常用配置项
phoenix.query.timeoutMs |
查询超时参数,默认60000ms |
hbase.rpc.timeout |
hbase rpc请求超时参数,默认60000ms |
hbase.client.scanner.timeout.period |
scan超时参数,默认60000ms |
index.builder.threads.max |
建立索引最大线程数,默认10 |
index.builder.threads.keepalivetime |
建立索引线程存活期,默认60s |
phoenix.query.dateFormatTimeZone |
执行日期类格式使用时区 |
phoenix.query.dateFormat |
date输出格式,默认yyyy-MM-dd |
phoenix.query.timeFormat |
time输出格式,默认HH:mm:ss |
phoenix.query.timestampFormat |
timestamp输出格式,默认yyyy-MM-dd HH:mm:ss |
- 点赞
- 收藏
- 关注作者
评论(0)