squirrel hbase Phonenix 三者集成

11 篇文章 0 订阅


需要点击“Drivers”,将phoenix的驱动添加进去。

③点击左上角 蓝色的 “ + ” 加号,添加


按上面的顺序,依次填写。
第一步,Name:随便写个名字,标记连接;
第二步,Example URL:相当于mysql的jdbc连接串,这里的alias写zookeeper的主机名称,端口号,可以写,可以不写,我一般不写;
第三步,选择Phoenix-core的jar包;
第四步,就是手动输入org.apache.phoenix.jdbc.PhoenixDriver。
然后点击OK。

④配置连接


Name:为随便起的名称。
Driver:选中③中添加的phoenix驱动。
URL:写如上内容,jdbc:phoenix:node1,node2,master等这里主要是zookeeper主机名。
User Name:要连接的主机的用户名
Password:要连接的主机的密码
点击Test可以进行测试,或点OK连接。
连接完毕,启动后,就可以看到如下的效果了。这里我已经创建了几个表了,这些表都是存在于HBase上的。



4、Squirrel的一些布局简介(看上面这个图):
1,用squirrel建立的一些连接
2,当前连接下,所有对象,包括主见系统表,普通表,视图。
3,为表,这些表都是实际存在于zookeeper所管理的HBase上的。右键此表,可以对表进行管理。
4,为视图。
5,编写sql脚本的地方,可以输入脚本执行。脚本执行方式,在5上面有一个小人,选中sql,点击小人就可以执行了。或者按ctrl + enter键,执行。
6,为选中的对象的一些基本信息,列信息,行数等。
7,为sql执行的一些状态。

5、在Squirrel中建表或视图
在Squirrel中创建表的过程主要是编写sql,进行执行。sql该怎么写,需要看phoenix驱动都支持什么效果。
这需要看phoenix的官网了。
需要注意的是phoenix是区分大小写的;
自己定义的HBase中的 HTableName,ColumnFamily,以及字段Column,需要和Phoenix中保持一致。(最好都用大写)

phoenix操作hbase,我们有两种方式,创建表,创建视图。
这两种方式,有区别。
创建表的话,可读可写,就可以对HBase进行插入,查询,删除操作。
视图的话,是只读的,一般就只可以进行查询操作
虽然看起来,表的功能,比视图更强大一些。但是就像是mysql等关系型数据库一样,删除表操作,会将表删掉。但是删除视图操作,却不会影响原始表的结构。
因为使用phoenix,创建表后,会自动和hbase建立关联映射。当你使用phoenix删除和hbase之间的关系时,就会将hbase中的表也删掉了
所以用视图,会对原始的HBase表影响小一些。

6、用phoenix可以创建表
(1)若hbase中,不存在名为htablename或htablename2的HTable:

create htablename(    pk VARCHAR primary key not null,    col1 VARCHAR null,    col2 VARCHAR null,    col3 VARCHAR null)
create htablename2(   
pk VARCHAR primary key null,   
"cf"."col1" VARCHAR null,   
"cf"."col2" VARCHAR null,   
"cf2"."col3" VARCHAR null,   
"cf2"."col4" VARCHAR null)

在SQuirreL中执行上面的SQL脚本,执行过程中,如果出现错误,会在工具的下面进行提示。
若成功后,就可以在HBase中看到这个表了,而且在SQuirrel中,看到此表。

(2)若hbase存在htablename3,但SQuirrel中看不到时
当安装好SQuirrel时,本以为连上hbase后,就可以在SQuirrel中看到hbase中的表了。但是并没有看到,也不会显示。
如果要想看到hbase中已存在的表,还需要一些操作。

也就是如果想要在SQuirrel中,看到htablename3,且想要对htablename3进行操作。
也还是需要在SQuirreL中进行执行创建表的操作,执行完毕后,就会将HBase的htablename3,映射到SQuirreL中。
这样我们就可以在Java api中进行操作了。否则是不可以的。

那么需要哪些具体操作呢?其实很简单,我当时没想到
就像创建表一样,使用Create table就可以了。就这样简单。
不过这个语句怎么写呢?怎样对应呢?


create htablename3(  
pk VARCHAR primary key null,    
"cf"."col1" VARCHAR null,
"cf"."col2" VARCHAR null,   
"cf2"."col3" VARCHAR null,   
"cf2"."col4" VARCHAR null)



然后在SQuirreL中执行,然后就可以看到数据了。
不过此时,可能还会有问题,乱码。 在SQuirrel中,主键以及一些包含汉字的字段,都是方块等乱码了。这个怎么解决???(暂未解决)

7、用phoenix可以创建视图
假如,要对刚刚创建的表htablenameX创建视图操作
CREATE  VIEW  “htablenameX”   (pk VARCHAR primary key)   default_column_family = ‘FM’
创建完成后,这里的“htablenameX” 是HBase中table “htablenameX”的名称。然后定义一个主键,就可以了。

可能还不太清楚,看下面
(1)第一种视图,假如HBase中存在表”DAMAI”,需要以视图的方式,操作它,那么开始创建视图
CREATE VIEW “DAMAI” ( PK VARCHAR PRIMARY KEY) DEFAULT_COLUMN_FAMILY=’FM’
这里双引号内的 “DAMAI” 和HBase中的表名是一样的,所以会自动关联。
会自动对应表名,自动关联字段。
这里需要注意:创建视图时,要保证在SQuirrel工具中,没有相同名称的表存在。

那么,如果想针对HBase中的一个表,建多个视图呢?慢慢来

(2)第二种视图,可以在Phoenix table的基础上创建
CREATE VIEW my_VIEW (new_col VARCHAR,new_col2 VARCHAR) AS SELECT * FROM phoenix_Table WHERE ……
也就是,原来在phoenix中,已经创建了表了。
例如:htablename2。在htablename2上建立一个视图,叫”mingzisuibian”  (名字随便)
CREATE VIEW mingzisuibian ( new_col VARCHAR, new_col2  VARCHAR )  AS SELECT * FROM htablename2 WHERE ….(针对htablename2的查询条件)

(3)第三种建视图的方式,是在视图之上建立视图
CREATE VIEW my_VIEW_ON_VIEW AS SELECT * FROM MY_VIEW WHERE ……
在(1)中,我们创建了一个视图 “DAMAI”。这里面包括了全部的字段。
所以说,在创建DAMAI视图的时候,可以将全部字段都包括进来。
所以,我们可以在DAMAI这个视图之上,创建其它视图,这样视图的名称,就可以随便定了。
例如:
CREATE VIEW BIGBIG AS SELECT * FROM DAMAI WHERE ……
不断往hbase中,添加数据,随着数据的增长,在phoenix建的视图中也可以看到的数据的条数,在同步增加。

综上所述,从上面可以看出,为了避免影响hbase的表信息,最好是创建一个视图。然后在视图的基础上,再创建其它视图。
也就是,先执行视图里面的(1),再执行视图里面的(3)。



欢迎大家如about云官方群371358502,更新咨询,更新资源,随时关注
 
   

121

主题

241

帖子

1020

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
1020
沙发
  楼主 |  发表于 2015-5-4 22:23:44  |  只看该作者
在SQuirrel中使用Phoenix操作HBase——基本的sql查询






使用标准的sql命令查看一下视图或表中的数据

select * from damai

这时可以用大小写都行了。没有区分


虽然phoenix能够执行标准的sql,但是phoenix的语法,数据类型,和方法还是稍微有一些差别。

在执行sql语句时,会常需要查询一下官网。

下面显示的,是我写的一些例子,字段和表名不重要,只是看一下phoenix执行sql时,一些写法。

主要包括 phoenix对hbase日期操作,phoenix对hbase分组,phoenix对hbase排序等


注意一下,在SQuirrel中,执行sql语句时,按Ctrl + Enter键就可以执行了。


Phoenix中的语法

Phoenix中的数据类型

Phoenix中的方法

我自己使用过程中一些简单语句,如下


select * from shuju;


select count(1) from shuju;


select cmtid,count(1) as num from shuju group by cmtid order by num desc;


select avgTO_NUMBER(avgt)) from shuju;


select cmtid,count(1) as num,avg(TO_NUMBER(avgt)) as avgt,avg(TO_NUMBER(loss)) as loss from shuju group by cmtid order by num desc;


select acm,dtype,cmtid,count(1) as num,avg(TO_NUMBER(avgt)) as avgt,avg(TO_NUMBER(loss)) as loss

from shuju

group by acm,dtype,cmtid

order by num desc;


select acm,dtype,porgcode,orgid,cmtid,count(1) as num,avg(TO_NUMBER(avgt)) as avgt,avg(TO_NUMBER(loss)) as loss

from shuju

group by acm,dtype,porgcode,orgid,cmtid

order by num desc;

where TO_DATE(ttime,’yyyyMMddHHmmss’)=TO_DATE(‘20141125′,’yyyyMMdd’)

select ttime from shuju order by ttime desc;


where TO_DATE(ttime,’yyyyMMddHHmmss’)=TO_DATE(‘20141125′,’yyyyMMdd’)



select TO_DATE(ttime,’yyyyMMddHHmmss’) from shuju;

select TO_DATE(‘20141125′,’yyyyMMdd’) from shuju;

select (TO_DATE(ttime,’yyyyMMddHHmmss’)=TO_DATE(‘20141125′,’yyyyMMdd’)) as aaa from shuju order by aaa asc;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值