phoenix部署使用文档.doc_第1页
phoenix部署使用文档.doc_第2页
phoenix部署使用文档.doc_第3页
phoenix部署使用文档.doc_第4页
phoenix部署使用文档.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

phoenix部署使用文档1 版本说明该文档说明中使用的各软件版本说明如下:Hadoop:2.7.0Hbase:1.0.1.1Phoenix:4.4.0-HBase-1.0squirrel-sql:3.5.32 服务器端设置第1步:上传phoenix软件到服务器将phoenix-4.4.0-HBase-1.0-bin.tar.gz上传到hadoop集群主节点;第2步:将文件解压到目录/home/hadoop/phoenix;第3步:将解压后lib下的phoenix-core-4.4.0-HBase-1.0.jar文件拷贝到各hbase节点的lib目录;第4步:重启hbase环境;第5步:主节点执行以下命令进入phoenix的shell环境,/home/hadoop/phoenix/bin/sqlline.py namenode:2181如果出现以上内容表示配置成功。3 客户端使用使用Squirrel作为客户端,与phoenix结合具体使用如下:第1步:下载Squirrel客户端软件到本地,将以下jar文件拷贝到Squirrel目录下的lib目录,这些jar文件在hbase客户端相关jar包目录。第2步:windows环境点击Squirrel目录下的squirrel-sql.bat文件启动客户端,启动后进入的页面如下第3步:点击Drivers页面的+进入客户端驱动添加页面,如下图所示其中各输入项解释如下:Name:随便写个名字;Example URL:相当于mysql的jdbc连接串,phoenix的格式为 jdbc:phoenix: zookeeper集群地址,需要注意,这里的zookeeper地址需要配置成域名的方式,并且需要有对应的dns域名映射,例如:192.168.6.71 namenode192.168.6.72 datanode1192.168.6.73 datanode2192.168.6.74 datanode3如果没有域名服务映射,可以在本地的hosts文件中配置映射关系。 Java Class Path:选择Phoenix-core的jar包;Class Name:手动输入org.apache.phoenix.jdbc.PhoenixDriver;点击Ok确定驱动器设置。第4步:点击Aliases页面的+进入连接设置页面,如下图所示其中各输入项解释如下:Name:随便写个名字;Driver:选中第3步添加的phoenix驱动;URL:写如上内容,jdbc:phoenix:namenode,datanode1,datanode2,datanode3等这里主要是zookeeper主机名;User Name:要连接的主机的用户名;Password:要连接的主机的密码;点击Test可以进行测试,或点OK连接。连接完毕,启动后,就可以看到如下的效果了。图中红色标注区域解释如下:1:用squirrel建立的一些连接2:当前连接下,所有对象,包括主见系统表,普通表,视图。3:为表,这些表都是实际存在于zookeeper所管理的HBase上的。右键此表,可以对表进行管理。4:为视图。5:编写sql脚本的地方,可以输入脚本执行。脚本执行方式,在5上面有一个小人,选中sql,点击小人就可以执行了。或者按ctrl + enter键,执行。6:为选中的对象的一些基本信息,列信息,行数等。7:为sql执行的一些状态。4 Phoenix使用示例以下示例在shell环境使用,也可以在squirrel客户端工具使用。4.1 新建表新建一张Person表,含有IDCardNum,Name,Age三个字段 ,test为table_schem,标准sql如下:create table IF NOT EXISTS test.Person (IDCardNum INTEGER not null primary key, Name varchar(20),Age INTEGER);在 Phoenix 中使用如下:0: jdbc:phoenix:10.35.66.72 create table IF NOT EXISTS test.Person (IDCardNum INTEGER not null primary key, Name varchar(20),Age INTEGER);No rows affected (0.344 seconds)0: jdbc:phoenix:10.35.66.72 !tables+-+-+-+-+| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TA |+-+-+-+-+| null | WL | BIG_LOG_DEVUTRACEID_INDEX | INDEX | null | WL | MSGCENTER_PUSHMESSAGE_V2_OWNERPAGE_INDEX | INDEX | null | SYSTEM | CATALOG | SYSTEM TABLE | null | SYSTEM | SEQUENCE | SYSTEM TABLE | null | SYSTEM | STATS | SYSTEM TABLE | null | DMO | SOWNTOWN_STATICS | TABLE | null | OL | BIGLOG | TABLE | null | TEST | PERSON | TABLE | null | WL | BIG_LOG | TABLE | null | WL | ERROR_LOG | TABLE | null | WL | MSGCENTER_PUSHMESSAGE | TABLE | null | WL | MSGCENTER_PUSHMESSAGE_V2 | TABLE |+-+-+-+-+0: jdbc:phoenix:10.35.66.72 select * from TEST.PERSON;+-+-+-+| IDCARDNUM | NAME | AGE |+-+-+-+-+-+-+可以看到,hbase中已经存在数据表Person了,包含了三列 4.2 插入数据对表进行插入操作,sql如下:insert into Person (IDCardNum,Name,Age) values (100,小明,12);insert into Person (IDCardNum,Name,Age) values (101,小红,15);insert into Person (IDCardNum,Name,Age) values (103,小王,22);在 Phoenix 中插入的语句为upsert,具体如下:0: jdbc:phoenix:10.35.66.72 upsert into test.Person (IDCardNum,Name,Age) values (100,小明,12);1 row affected (0.043 seconds)0: jdbc:phoenix:10.35.66.72 upsert into test.Person (IDCardNum,Name,Age) values (101,小红,15);1 row affected (0.018 seconds)0: jdbc:phoenix:10.35.66.72 upsert into test.Person (IDCardNum,Name,Age) values (103,小王,22);1 row affected (0.009 seconds)0: jdbc:phoenix:10.35.66.72 select * from test.Person;+-+-+-+| IDCARDNUM | NAME | AGE |+-+-+-+| 100 | 小明 | 12 | 101 | 小红 | 15 | 103 | 小王 | 22 |+-+-+-+3 rows selected (0.115 seconds)从上面可以看到,三条数据已经进入hbase里面了;好了,现在要对表添加一列sex性别操作,怎么办?4.3 修改表alter 修改表数据,sql如下:ALTER TABLE test.Persion ADD sex varchar(10);Phoenix 中操作如下:0: jdbc:phoenix:10.35.66.72 ALTER TABLE test.Person ADD sex varchar(10);No rows affected (0.191 seconds): jdbc:phoenix:10.35.66.72 select * from test.person;+-+-+-+-+| IDCARDNUM | NAME | AGE | SEX |+-+-+-+-+| 100 | 小明 | 12 | null | 101 | 小红 | 15 | null | 103 | 小王 | 22 | null |+-+-+-+-+3 rows selected (0.113 seconds)上图看到已经新增了列sex,每行的默认值为null,那么怎么样修改这些值呢?4.4 更新表数据更新表数据 ,标准的sql 如下:update test.Person set sex=男 where IDCardNum=100;update test.Person set sex=女 where IDCardNum=101;update test.Person set sex=男 where IDCardNum=103;Phoenix中不存在update的语法关键字,而是upsert,功能上替代了Insert+update,官方说明为:UPSERT VALUESInserts if not present and updates otherwise the value in the table. The list of columns is optional and if not present, the values will map to the column in the order they are declared in the schema. The values must evaluate to constants.根据介绍,只需要在upsert语句中制定存在的idcardnum即可实现更新,在 Phoenix 客户端中操作如下:0: jdbc:phoenix:10.35.66.72 upsert into test.person (idcardnum,sex) values (100,男);1 row affected (0.083 seconds)0: jdbc:phoenix:10.35.66.72 upsert into test.person (idcardnum,sex) values (101,女);1 row affected (0.012 seconds)0: jdbc:phoenix:10.35.66.72 upsert into test.person (idcardnum,sex) values (103,男);1 row affected (0.008 seconds)0: jdbc:phoenix:10.35.66.72 select * from test.person;+-+-+-+-+| IDCARDNUM | NAME | AGE | SEX |+-+-+-+-+| 100 | 小明 | 12 | 男 | 101 | 小红 | 15 | 女 | 103 | 小王 | 22 | 男 |+-+-+-+-+3 rows selected (0.087 seconds)4.5 复杂查询复杂查询,通过Phoenix可以支持 where、group by、case when 等复杂的查询条件,案例如下:# 现增加几条数据0: jdbc:phoenix:10.35.66.72 upsert into test.Person (IDCardNum,Name,Age,sex) values (104,小张,23,男);1 row affected (0.012 seconds)0: jdbc:phoenix:10.35.66.72 upsert into test.Person (IDCardNum,Name,Age,sex) values (105,小李,28,男);1 row affected (0.015 seconds)0: jdbc:phoenix:10.35.66.72 upsert into test.Person (IDCardNum,Name,Age,sex) values (106,小李,33,男);1 row affected (0.011 seconds)0: jdbc:phoenix:10.35.66.72 select * from test.person;+-+-+-+-+| IDCARDNUM | NAME | AGE | SEX |+-+-+-+-+| 100 | 小明 | 12 | 男 | 101 | 小红 | 15 | 女 | 103 | 小王 | 22 | 男 | 104 | 小张 | 23 | 男 | 105 | 小李 | 28 | 男 | 106 | 小李 | 33 | 男 |+-+-+-+-+6 rows selected (0.09 seconds)where + group by 语句例子:jdbc:phoenix:10.35.66.72 select sex ,count(sex) as num from test.person where age 20 group by sex;+-+-+| SEX | NUM |+-+-+| 男 | 4 |+-+-+case when 的例子:0: jdbc:phoenix:10.35.66.72 select (case name when 小明 then 明明啊 when 小红 then 红红啊 else name end) as showname from test.person;+-+| SHOWNAME |+-+| 明明啊 | 红红啊 | 小王 | 小张 | 小李 | 小李 |+-+4.6 删除数据及删除表删除数据及删除表,标准sql如下:delete from test.Person where idcardnum=100;drop table test.person;Phoenix中同标准sql一样,案例如下:0: jdbc:phoenix:10.35.66.72 delete from test.Person where idcardnum=100;1 row affected (0.072 seconds)0: jdbc:phoenix:10.35.66.72 select * from test.Person where idcardnum=100;+-+-+-+-+| IDCARDNUM | NAME | AGE | SEX |+-+-+-+-+-+-+-+-+0: jdbc:phoenix:10.35.66.72 drop table test.person;No rows affected (1.799 seconds)0: jdbc:phoenix:10.35.66.72 select * from test.person;Error: ERROR 1012 (42M03): Table undefined. tableName=TEST.PERSON (state=42M03,code=1012)0: jdbc:phoenix:10.35.66.72 !tables+-+-+-+-+| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TA |+-+-+-+-+| null | WL | BIG_LOG_DEVUTRACEID_INDEX | INDEX | null | WL | MSGCENTER_PUSHMESSAGE_V2_OWNERPAGE_INDEX | INDEX | null | SYSTEM | CATALOG | SYSTEM TABLE | null | SYSTEM | SEQUENCE | SYSTEM TABLE | null | SYSTEM | STATS | SYSTEM TABLE | null | DMO | SO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论