使用Phoenix操作数据库

2019-12-23 21:47:17河南郭建伟
网络安全和信息化 2019年5期
关键词:安装包命令客户端

■ 河南 郭建伟

编者按:Phoenix是架构在Hbase之上的高性能关系数据库层,可用于低延时的应用。Phoenix可利用SQL语句来对Hbase进行查询。Phoenix相当于一个Java的中间件,利用JDBC连接来操作Hbase数据库。

Phoenix支持的Secondary Indexing(二级索引)包括Functional Indexes(函数索引),Global Indexing(全 局 索 引)和Local Indexing(本地索引)。并且从V4.4.0开始,支持允许用户创建和部署自定义的函数。

Phoenix可以支持将CSV数据加载到Phoenix表中,其一通过psql命令以单线程方式进行加载,适用于数据量较少的情况。其二是基于MapReduce的Bulk Load工具进行加载,适用于数据量较大的情况。Phoenix提供了查询服务器,可以提供瘦客户端的连接方式。从V4.1开始,Phoenix提供了跟踪的特性,可以查询每个请求的Trace信息,利用这一特性可以了解Query和Insert操作的所有细节。Phoenix支持JDBC Array数据类型,Sequences是标准的SQL特性,可以生成自动增长的数字作为表的某列的ID,Phoenix支持序列特性。Phoenix通 过 Update Statistice可以更新表的统计信息,来提高查询的性能。

此外,Phoenix还支持Joins(连接),Subqueries(子查询),Views(视图),Multi tenancy(多租户,允许不同的组合连接实现数据访问的隔离),Oaged Querties(分页查询),Dynamic Columns(动态列),Skip Scan(跳跃扫描,在范围扫描时极大的提高性能),Salted Tables(散布表,可以有效解决因为Row Key自动增长,导致Hbase顺序写引发的Region Server数据热点问题),Row Timestampcolumn(时 间 戳列,将Hbase中的本地时间戳映射为Phoenix中的列,有利于Hbase基于时间范围的查询)等特性。Phoenix提供了很多的操作命令,其大体上和标准的SQL语句相当,但是存在一些细节的不同,例如其使用Upsert命令取代Insert操作等。

安装和配置Phoenix

在 安 装Phoenix时,需要注意对于不同版本的Hbase来说,需要对应版本的Phoenix安装包。例如执行“su - hadoop”,“cd /hadoop/hbase-x.x.x.x/bin”,“./hbase version”命令,可以查看Hbase的版本信息。

执 行“g u n z i p Phoenix-4.x.x-hbase-1.x.-bin.tar.gz”命 令,对Phoenix安装包进行解压。

执 行“t a r -x v f Phoenix-4.x.x-hbase-1.x.-bin.tar”命令,提取其中的文件。进入Phoenix解压路径,执行“ls *core*jar”和“ls *client.jar*”命令。来查询关键的Jar文件。对于Hbase集群来说,需要将相关的Jar文件复制到所有的节点上。

执 行“cp Phoenixcore-4.x.x-hnase-1.x.jar/hadoop/hbase-1.x.x.x/lib”命令,将指定的Jar文件复制到当前节点的Hbase路径中的“lib”目录下。

执 行“scp Phoenixcore-4.x.x-hnase-1.x.jar 172.16.1.100:/hadoop/hbase-1.x.x.x/lib” 命令,将其复制到另外的一个节点上,假设其IP为“172.16.1.100”,如果有其他节点需要依次复制。按照相同的方法,将“Phoenix-4.x.x-hbase-1.x-client.jar”文件复制到本地以及其他Hbase节点的“lib”目录中。其中的“x”表示具体的版本信息,需要根据具体情况进行调整。

进入Hadoop路径下的“bin”目录,执行“./stophase.sh”和“/start-hbase.sh”命令。来重启Hbase集群,让上述Jar包生效。

进入Phoenix安装路径下的“bin”目录,执行“cp/hadoop/hbase-1.x.x.x/conf/hbase-site.xml ./”命令,将Hbase的“/hbasesite.xml”文件复制进来。

执 行“./sqlline.py localhost”命令,连接本地节点,在Phoenix客户端控制台下执行“!tables”命令,显示其所有的系统表和用户表,执行“!exit”命令,退出操作环境。对应的进入Hbase的“bin”目录下,执行“./hbase shell”命令。在控制台下执行“list”命令,可以看到上述Phoenix创建的系统表。

用Phoenix管理Hbase数据

下面简单举例说明如何使用Phoenix来管理数据,在Phoenix客户端控制下执行“CREATE TABLE IF NOT EXISTS WEB_STAT ( HOST CHAR(2) NOT NULL,DOMAIN VARCHAR NOT NULL,FEATURE VARCHAR NOT NULL,DATE DATE NOT NULL,USAGE.CORE BIGINT,USAGE.D B B I G I N T,S T A T S.ACTIVE_VISITOR INTEGER CONSTRAINT PK PRIMARY KE Y(HOST,DOMAIN,FEATURE,DA TA));”命令,创建名为“Web_Stat”的表,该命令首先会判断该表是否存在,如果不存在则创建表。

在其中创建名为“HOST”,“DOMAIN”,“FEATURE”和“DATE”等列,之后等行用来指定在表中列和列族,“USAGE”和“STATS”代 表 列 族,“CORE”,“DB”和“ACTIVE_VISITOR”表示列,同时指明列的数据类型。并使用“PRIMARY KEY”来指定相关的主键。

执行“!tables”命令,可以看到上述表已经创建成功。对应地,在Hbase控制台下执行“list”命令,也可以看到该表的存在。

执 行“describe "WEB_STAT"”命令,来查看该表的信息。因为Phoenix支持将CSV文件导入到表中,进入Phoenix安装路径下的“bin”目录,执行“./psql.py -t WEB_STAT localhost "../examples/WEB_STAT.csv”命令,将指定路径中的“WEB_STAT.csv”文件中的内容导入进来,其中的“-t”参数指定表的名称。

注意:在该CSV文件中每列之间需以逗号进行分隔。

在Hbase控制台中执行“scan "WEB_STAT"”命令,可以查看该表的数据。

在Phoenix客户端控制台下执行“select * from web_stat;”命令可以查看该表的所有内容。

执行“select count(*)from web_stat;”命令,显示该表中的记录数。

执 行“s e l e c t domain,count(*) as num from web_stat group by domain order by num desc;”命令,针对“domain”列进行分组,使用特定的列进行排序。

执行“select avg(core)from web_stat;”命令,来查询指定列的平均值。

执 行“s e l e c t domain,count(*) as n u m,a v g(c o r e) a s core,avg(db) as db from web_stat group by domain order by num desc;”命令,可以执行多字段分组功能。

执 行“s e l e c t host,domain,date from web_stat where TO_CHAR(date)="2018-10-15 15:30:01.000"” 命 令,来查询指定日期的字段。 执 行“select TO_DATE("20181030","yyyyMMd d") from web_stat”命令,转换字符串和日期类型。

猜你喜欢
安装包命令客户端
手机之间如何快速分享应用安装包
只听主人的命令
县级台在突发事件报道中如何应用手机客户端
传媒评论(2018年4期)2018-06-27 08:20:24
孵化垂直频道:新闻客户端新策略
传媒评论(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客户端的设计与实现
电子测试(2018年10期)2018-06-26 05:53:34
移防命令下达后
另类解压软件安装包
电脑爱好者(2017年3期)2017-05-04 10:29:50
这是人民的命令
蓝色命令
客户端空间数据缓存策略