hive hbase HBase與Hive整合使用

2021-10-03 23:40:21 字數 3276 閱讀 2885

環境準備

因為我們後續可能會在操作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 tmp.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;

SQL與NoSQL MySQL與NoSQL的融合

寫這一篇內容的原因是mysql5.6.2突然推出了memcached的功能。nosql to innodb with memcached的出現,可以看出nosql對關聯式資料庫的確產生了巨大的影響,個人覺得這是乙個非常大的進步,可以讓開發人員更加方便的使用nosql和關聯式資料庫。nosql一般被認...

指標與陣列 a與 a區別

假設宣告了乙個陣列a,則 a表示陣列a的首位址,a與 a 0 表示陣列a首元素的首位址,那麼 a 1與a 1有哪些區別呢?通過下面的實驗來說明。int i 0 int a 5 int p int a 1 for i 0 i 5 i printf a 0x p,a 0x p,a 1 0x p n a,...

apache與tomcat與weblogic對比

apache,tomcat,weblogic都是常用的中介軟體,發布 等應用都離不開這些好東東。強大程度對比apache 新手容易將apache與tomcat混亂。apache與tomcat都是同乙個公司生產的,apache是輕量級的,tomcat是企業級的。apache一般與php mysql等整...