hive-hbase-handler方式匯入hive表資料到hbase表中

來源:互聯網
上載者:User

標籤:style   class   blog   code   http   color   

Hive與HBase的整合功能的實現是利用兩者本身對外的API介面互相進行通訊,相互連信主要是依靠hive-hbase-handler.jar工具類 ;hive-hbase-handler.jar在hive的lib包中而不是在hbase的lib中,hive0.6版本以後; 建立hive表的同時建立hbase表,刪除 hive表的同時也會刪除對應的hbase表。參見官方文檔:https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 使用前提:配置好hive和hbase對應的CDH版本,本案例使用的hive版本是hive-0.12.0-cdh5.0.0,HBase使用的版本是hbase-0.96.1.1-cdh5.0.0 添加$HIVE_HOME/conf/hive-site.xml配置屬性
<property>    <name>hive.aux.jars.path</name>    <value>file:///home/spark/app/hive-0.12.0-cdh5.0.0/lib/hive-hbase-handler-0.12.0-cdh5.0.0.jar,file:///home/spark/app/hive-0.12.0-cdh5.0.0/lib/zookeeper-3.4.5-cdh5.0.0.jar,file:///home/spark/app/hive-0.12.0-cdh5.0.0/lib/hbase-common-0.96.1.1-cdh5.0.0.jar,file:///home/spark/app/hive-0.12.0-cdh5.0.0/lib/hbase-client-0.96.1.1-cdh5.0.0.jar,file:///home/spark/app/hive-0.12.0-cdh5.0.0/lib/hbase-server-0.96.1.1-cdh5.0.0.jar,file:///home/spark/app/hive-0.12.0-cdh5.0.0/lib/hbase-protocol-0.96.1.1-cdh5.0.0.jar,file:///home/spark/app/hive-0.12.0-cdh5.0.0/lib/htrace-core-2.01.jar</value></property>

需要將除了hive-hbase-handler之外所有的jar包從$HBASE_HOME/lib下拷貝到$HIVE_HOME/lib下

啟動hive:推薦使用hive -hiveconf hive.root.logger=DEBUG,console啟動,可以看到更加詳細的日誌資訊

案例一:操作簡單表單cf

建立hive-hbase表:

CREATE TABLE hive_hbase_table_kv(key string, value string) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")TBLPROPERTIES ("hbase.table.name" = "hbase_hive_table_kv");
key與:key對應value與:val對應hbase_hive_table_kv為hbase的表名hive_hbase_table_kv為hive表名

建立hive表並匯入資料

CREATE TABLE kv (key STRING, value STRING);LOAD DATA LOCAL INPATH ‘/home/spark/app/spark-1.0.0-bin-2.3.0-cdh5.0.0/examples/src/main/resources/kv1.txt‘ OVERWRITE INTO TABLE kv;INSERT OVERWRITE TABLE hive_hbase_table_kv SELECT key, value FROM kv;

查看hive和hbase發現均建立了表,並且在兩邊均能查詢到資料。

 

案例二:操作簡單表多cf

CREATE TABLE hbase_table_2(key string, value1 string, value2 string, value3 string) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,a:b,a:c,d:e");

b/c欄位屬於a列族,e屬於d列族。

預設不指定hbase的表名就和hive的表名相同

匯入hive表資料:INSERT OVERWRITE TABLE hbase_table_2 SELECT empno, ename, job, deptno  FROM emp;

 

 

案例三:操作分區表

CREATE TABLE hbase_table_3(key string, ename string, job string, sal double) partitioned by(pt string)STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,a:b,a:c,d:e")TBLPROPERTIES ("hbase.table.name" = "hbase_table_3");

匯入hive資料:

INSERT OVERWRITE TABLE hbase_table_3 PARTITION(pt=‘2013-08-01‘) SELECT empno, ename, job, sal FROM emp;

 

注意事項:

與hbase整合的有分區的表在使用hive查詢時存在問題: select * from table查詢不顯示資料,select column from table可以查到資料

為什麼select * from xxx 不顯示資料?

select * from xxx在普通表中是直接讀取HDFS檔案,而使用hive-hbase-handler的方式來匯入資料的時候,資料是存放在hbase的hdfs上;

在這裡是直接從HBase進行查詢。查詢是成功了,但是hive並不會展示。

 


 

 

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.