Apache phoenix命令的基本使用

举报
Lettle whale 发表于 2020/10/29 14:43:12 2020/10/29
【摘要】 本文简单介绍了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

 


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。