環境準備
因為我們後續可能會在操作hive的同時對hbase也會產生影響,所以hive需要持有操作hbase的jar,那麼接下來拷貝hive所依賴的jar包(或者使用軟連線的形式)。
export hbase_home=/opt/module/hbase
export hive_home=/opt/module/hive
ln -s $hbase_home/lib/hbase-common-1.3.1.jar $hive_home/lib/hbase-common-1.3.1.jar
ln -s $hbase_home/lib/hbase-server-1.3.1.jar $hive_home/lib/hbase-server-1.3.1.jar
ln -s $hbase_home/lib/hbase-client-1.3.1.jar $hive_home/lib/hbase-client-1.3.1.jar
ln -s $hbase_home/lib/hbase-protocol-1.3.1.jar $hive_home/lib/hbase-protocol-1.3.1.jar
ln -s $hbase_home/lib/hbase-it-1.3.1.jar $hive_home/lib/hbase-it-1.3.1.jar
ln -s $hbase_home/lib/htrace-core-3.1.0-incubating.jar $hive_home/lib/htrace-core-3.1.0-incubating.jar
ln -s $hbase_home/lib/hbase-hadoop2-compat-1.3.1.jar $hive_home/lib/hbase-hadoop2-compat-1.3.1.jar
ln -s $hbase_home/lib/hbase-hadoop-compat-1.3.1.jar $hive_home/lib/hbase-hadoop-compat-1.3.1.jar
同時在hive-site.xml中修改zookeeper的屬性,如下:
hive.zookeeper.quorum
hadoop102,hadoop103,hadoop104
the list of zookeeper servers to talk to. this is only needed for read/write locks.
hive.zookeeper.client.port
2181
the port of zookeeper servers to talk to. this is only needed for read/write locks.
1.案例一
目標:建立hive表,關聯hbase表,插入資料到hive表的同時能夠影響hbase表。
分步實現:
(1) 在hive中建立表同時關聯hbase
create table hive_hbase_emp_table(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
stored by 'org.apache.hadoop.hive.hbase.hbasestoragehandler'
tblproperties ("hbase.table.name" = "hbase_emp_table");
完成之後,可以分別進入
hive
和hbase
檢視,都生成了對應的表
(2) 在hive中建立臨時中間表,用於load檔案中的資料
create table emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';
(3) 向hive中間表中load資料
hive> load data local inpath '/home/admin/softwares/data/emp.txt' into table emp;
(4) 通過insert命令將中間表中的資料匯入到hive關聯hbase的那張表中
hive> insert into table hive_hbase_emp_table select * from emp;
(5) 檢視hive以及關聯的hbase表中是否已經成功的同步插入了資料
hive:
hive> select * from hive_hbase_emp_table;
hbase:
hbase> scan 『hbase_emp_table』
2.案例二
目標:在hbase中已經儲存了某一張表hbase_emp_table,然後在hive中建立乙個外部表來關聯hbase中的hbase_emp_table這張表,使之可以借助hive來分析hbase這張表中的資料。
注:該案例2緊跟案例1的腳步,所以完成此案例前,請先完成案例1。
分步實現:
(1) 在hive中建立外部表
create external table relevance_hbase_emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
stored by
'org.apache.hadoop.hive.hbase.hbasestoragehandler'
":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno")
tblproperties ("hbase.table.name" = "hbase_emp_table");
(2) 關聯後就可以使用hive函式進行一些分析操作了
hive (default)> select * from relevance_hbase_emp;
HIVE與HBase的整合
可以把hive整合hbase需要的jar包拷貝到hive lib目錄下面 1 hbase server 0.98 6 cdh5.3.6.jar 2 hbase client 0.986 cdh5.3.6.jar 3 hbase potocol 0.98 6 cdh5.3.6.jar 4 hbase ...
Hive 五 hive與hbase整合
配置 hive 與 hbase 整合的目的是利用 hql 語法實現對 hbase 資料庫的增刪改查操作,基本原理就是利用兩者本身對外的api介面互相進行通訊,兩者通訊主要是依靠hive hbase handler.jar工具類。但請注意 使用hive操作hbase中的表,只是提供了便捷性,前面章節已...
Hive篇 Hive與Hbase整合
一 前述 hive會經常和hbase結合使用,把hbase作為hive的儲存路徑,所以hive整合hbase尤其重要。二 具體步驟 hive和hbase同步 1 把hive hbase handler 1.2.1.jar cp到hbase lib 下 同時把hbase中的所有的jar,cp到hive...