hbase shell远程连接_hbase与phoenix集成
Phoenix是構(gòu)建在HBase之上的關(guān)系型數(shù)據(jù)庫層,作為內(nèi)嵌的客戶端JDBC驅(qū)動(dòng)用以對(duì)HBase中的數(shù)據(jù)進(jìn)行低延遲訪問
Phoenix會(huì)將用戶編寫的sql查詢編譯為一系列的scan操作,最終產(chǎn)生通用的JDBC結(jié)果集返回給客戶端
Phoenix可以看成是mysql
準(zhǔn)備安裝包
apache-phoenix-4.12.0-HBase-1.2-bin.tar.gz
解壓Phoenix
tar -zxvf apache-phoenix-4.12.0-HBase-1.2-bin.tar.gz
改下名字
mv apache-phoenix-4.12.0-HBase-1.2-bin phoenix-4.12.0
看下目錄結(jié)構(gòu)
將jar拷貝到hbase的lib目錄下
phoenix-4.12.0-HBase-1.2-client.jar
phoenix-core-4.12.0-HBase-1.2.jar
cp phoenix-4.12.0-HBase-1.2-client.jar /opt/bigdata/hbase-1.2.1/lib/
cp phoenix-core-4.12.0-HBase-1.2.jar /opt/bigdata/hbase-1.2.1/lib/
重啟hbase服務(wù),讓配置生效
找到hbase-site.xml文件,將hbase/conf下的hbase-site.xml文件拷貝到Phoenix/bin目錄下覆蓋掉,或者直接修改
??? ??????????????? hbase.tmp.dir??????????????? /opt/bigdata/hbase-1.2.1/data??????? ??????? ??????????????? hbase.rootdir??????????????? hdfs://masterhbase:8082/hbase??????? ???????? ??????????????? hbase.cluster.distributed??????????????? true???????? ???????? ??????????????? hbase.zookeeper.quorum??????????????? masterhbase,masterslave1,masterslave2??????? ???? ??????????????????? zookeeper.znode.parent??????????????? /hbase??????? ??????? ??????????????? hbase.regionserver.wal.codec??????????????? org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec????????安裝工具
yum -y install python-argparse
啟動(dòng)Phoenix:指定ZK的地址以及端口號(hào),作為hbase的訪問入口
bin/sqlline.py masterhbase:2181
在HBase中輸入list,會(huì)發(fā)現(xiàn)多一些表
語句大多數(shù)類似mysql語句,但是沒有show database table list都不行 用help幫助信息
!tables 當(dāng)前phoenix的系統(tǒng)表,hbase中也會(huì)有這些表,表示關(guān)聯(lián)成功一半
創(chuàng)建表
CREATE TABLE user (
id varchar PRIMARY KEY,
name varchar ,
passwd varchar
);
在HBase Shell中可以看到
hbase區(qū)分大小寫
Phoenix不區(qū)分大小寫,默認(rèn)情況下都是大寫,變小寫加上雙引號(hào)就可以
在hbase的shell中:describe 'USER' 查看
得知默認(rèn)列族為0,id主鍵字段對(duì)應(yīng)到hbase的ROW字段
phoenix插入數(shù)據(jù): updata+insert結(jié)合(upsert)更新數(shù)據(jù)與這個(gè)語句是一樣的
upsert into user(id, name, passwd) values('001', 'admin', 'admin');
在HBase Shell中查看
scan 'USER'
phoenix刪除表
drop table user;
phoenix指定列族
CREATE TABLE user (
id varchar PRIMARY KEY,
INFO.name varchar ,
INFO.passwd varchar
);
在hbase shell中查看
phoenix查詢語句:
select * from user;
select name from user where id ='001';
phoenix刪除語句:
delete from user where id='001';
在phoenix的CLI界面中進(jìn)行簡(jiǎn)單的CRUD操作,基本上與RDBMS的操作沒有太大區(qū)別。
hbase與phoenix表與表進(jìn)行關(guān)聯(lián)
在phoenix中:列的順序可以不一致,表名稱必須一致,以及列名稱一致
在HBase中有一張表
我們?cè)趐hoenix做映射創(chuàng)建
create table "stu_info_importtsv"(
"ROW" varchar primary key,
"f1"."location" varchar,
"f2"."age" varchar,
"f1"."name" varchar,
"f3"."addr" varchar
);
查看下數(shù)據(jù)
回到hbase中會(huì)發(fā)現(xiàn)一些變化,不會(huì)影響,可忽略
phoenix數(shù)據(jù)類型:
char
varchar
decimal
tinyint
smallint
integer
bigint
float
double
timestamp
date
time
binary
varbinary
phoenix導(dǎo)入csv文件數(shù)據(jù)(批量):
注意:要加載的所有CSV文件都必須具有".csv"文件擴(kuò)展名
另外phoenix也支持mr做一個(gè)批量數(shù)據(jù)導(dǎo)入
Phoenix創(chuàng)建表
create table if not exists bulkdata (
state char(2) not null,
city varchar not null,
population bigint
constraint my_pk primary key (state, city)
);
準(zhǔn)備數(shù)據(jù)
NY,New York,8143197
CA,Los Angeles,3844829
IL,Chicago,2842518
TX,Houston,2016582
PA,Philadelphia,1463281
AZ,Phoenix,1461575
TX,San Antonio,1256509
CA,San Diego,1255540
TX,Dallas,1213825
CA,San Jose,912332
如果沒有指定表的名稱,他根據(jù)文件名稱來找對(duì)應(yīng)的表
(bin/psql.py masterhbase /data/phoeniximport.csv 沒有指定表名稱)
bin/psql.py -t BULKDATA masterhbase /data/phoeniximport.csv
查詢數(shù)據(jù)
如果使用sql文件
執(zhí)行語句
/opt/bigdata/phoenix-4.12.0/bin/psql.py /data/testphoenix.sql
查看表也是有的
我們看下HBase中
主鍵就是hbase對(duì)應(yīng)的rowkey,為了防止hbase主鍵的唯一性,可以設(shè)置多個(gè)字段為主鍵
這個(gè)表就是多個(gè)字段的主鍵
在hbase中添加數(shù)據(jù)和phoenix添加數(shù)據(jù)的不同:
添加數(shù)據(jù)
upsert into bulkdata(state, city, population) values('NY', 'admin', 212313);
查看下
再添加
put 'BULKDATA','41','0:population','2222'
put 'BULKDATA','41','0:city','SHANGHAI'
put 'BULKDATA','41','0:state','tom'
查看下
但是在phoenix中沒有
總結(jié):
首先,這張表是在phoenix中創(chuàng)建
在phoenix中更新數(shù)據(jù),hbase也會(huì)更新
在hbase中更新數(shù)據(jù),phoenix是不會(huì)更新的
一些小補(bǔ)充:
1、phoenix JAVA API也可以
phoenix-4.12.0-HBase-1.2-client.jar
phoenix-core-4.12.0-HBase-1.2.jar
添加到項(xiàng)目的classpath中,代碼風(fēng)格類似JDBC,這個(gè)網(wǎng)上很多,不做過多練習(xí)。
2、一個(gè)第三方工具
使用Squirrel GUI客戶端來連接phoenix
就像MySQL使用Navicat for MySQL,小海豚一樣的連接工具,在進(jìn)行一些數(shù)據(jù)庫操作的時(shí)候能夠更加的直觀和方便
將下載的jar文件雙擊進(jìn)行安裝,直接下一步即可
將phoenix-4.12.0-HBase-1.2-client.jar拷貝到squirrel安裝目錄的lib目錄下。
啟動(dòng):進(jìn)入Drivers標(biāo)簽頁創(chuàng)建新的Driver (加號(hào))
參數(shù)說明:
Name:hbasetest(可以填寫其他名稱)
ExampleURL:填寫HBase集群的zookeeper集群的連接信息,這里是jdbc:phoenix:hbasemaster:2181
Website URL:這里不填寫
Java Class Path:選擇phoenix-4.2.2-client.jar(是否選中無所謂,只要在Java Class Path里面就行)
進(jìn)入Aliases標(biāo)簽頁創(chuàng)建新的Alias(加號(hào))
參數(shù)說明:
Name:hbasemaster(可以填寫其他名稱)
Driver:選擇ibeifeng.class,即上一步創(chuàng)建的Driver
URL:這里就是HBase集群的zookeeper的連接ip和port
User Name:隨便填寫
Password:隨便填寫
在Aliases標(biāo)簽中雙擊剛剛創(chuàng)建的phoenix打開連接
點(diǎn)擊SQL標(biāo)簽進(jìn)入sql命令行界面,輸入語句執(zhí)行(小人走路的是執(zhí)行按鈕)
練習(xí)語句
create table if not exists mytable (
id integer primary key,
name varchar,
sex varchar,
address varchar
);
upsert into mytable values (1, 'wxb', 'male', '010-22222222');
upsert into mytable values (2, 'll', 'male', '010-11111111');
select * from mytable;
select * from "stu_info"
依然注意大小寫
在SQuirrel中,執(zhí)行sql語句時(shí),按Ctrl + Enter鍵就可以執(zhí)行了
總結(jié)
以上是生活随笔為你收集整理的hbase shell远程连接_hbase与phoenix集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么给电脑硬盘分区
- 下一篇: centos rpm 安装 perl_L