環境準備
因為我們後續可能會在操作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等整...