您好,登錄后才能下訂單哦!
Hive中怎么通過外部表操作Hbase數據,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
概述:
HBase:
查詢效率比較高,常為實時業務提供服務,但是其查詢方式比較單一,只能通過row方式get單條數據,或者通過scan加過濾器的方式掃描數據表獲取數據。
Hive:
hive用來存儲結構化數據,常用來搭建數據倉庫作為離線分析的數據存儲,支持HQL操作,但是對于復雜HQL都會轉化成mapreduce任務,執行比較慢。
有時候我們數據存在HBase中,但是需要通過sql語句來操作hbase表數據,我們一般使用Hive外部表操作HBase數據。
大體步驟如下:
1.拷貝依賴包
將Hive操作HBase依賴的幾個包拷貝到Hive安裝目錄下的lib下(每個hive節點都要執行拷貝):
/usr/lib/hive/lib/zookeeper.jar;
/usr/lib/hive/lib/hbase.jar;
/usr/lib/hive/lib/hive-hbase-handler-X.X.X.jar
/usr/lib/hive/lib/guava-11.0.2.jar;
2.HBase操作
登錄hbase shell控制臺,新建hbase表ljs:student(ljs是命名空間,student是表名)
執行命令:
create_namespace 'ljs'
create 'ljs:student','info'
查看表結構:
!desc 'ljs:student'
向HBase表插入數據:
put 'ljs:student','1001','info:name','ljs1001'
put 'ljs:student','1001','info:age','21'
put 'ljs:student','1001','info:score','89'
put 'ljs:student','2001','info:name','ljs1002'
put 'ljs:student','2001','info:age','24'
put 'ljs:student','2001','info:score','78'
查看表數據:
3.Hive操作
執行/usr/hdp/2.6.3.0-235/hive/bin/hive登錄到hive控制臺
新建hive數據表:
create external table hive_student(user_no string,user_name string,user_age string,user_score string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping" = ":key,info:name,info:age,info:score") tblproperties("hbase.table.name" = "ljs:student");
查詢hive表,可查看hbase映射表中對應的數據:
至此Hive操作HBase表數據完成。
注意:
1.hive中建hbase映射表時,建表語句中關鍵字“hbase.columns.mapping”后面的對應映射字段要與HBase表字段大小寫一致。否則可能映射失敗。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。