Hive集成HBase详解
生活随笔
收集整理的這篇文章主要介紹了
Hive集成HBase详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘要 Hive提供了與HBase的集成,使得能夠在HBase表上使用HQL語句進行查詢 插入操作以及進行Join和Union等復雜查詢 應用場景 1. 將ETL操作的數據存入HBase 2. HBase作為Hive的數據源 3. 構建低延時的數據倉庫 使用 1.從Hive中創建HBase表
hbase(main):003:0> scan "xyz" ROW COLUMN+CELL 0 row(s) in 0.0060 seconds建表或映射表的時候如果沒有指定:key則第一個列默認就是行鍵 HBase對應的Hive表中沒有時間戳概念,默認返回的就是最新版本的值 由于HBase中沒有數據類型信息,所以在存儲數據的時候都轉化為String類型 3.多列及多列族的映射 如下表:value1和value2來自列族a對應的b c列,value3來自列族d對應的列 CREATE TABLE hbase_table_1(key int, value1 string, value2 int, value3 int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = ":key,a:b,a:c,d:e"
);
INSERT OVERWRITE TABLE hbase_table_1 SELECT foo, bar, foo+1, foo+2
FROM pokes WHERE foo=98 OR foo=100; 4.Hive Map類型在HBase中的映射規則 如下表:通過Hive的Map數據類型映射HBase表,這樣每行都可以有不同的列組合,列名與map中的key對應,列值與map中的value對應 CREATE TABLE hbase_table_1(value map<string,int>, row_key int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = "cf:,:key"
);
INSERT OVERWRITE TABLE hbase_table_1 SELECT map(bar, foo), foo FROM pokes
WHERE foo=98 OR foo=100; cf為列族,其列名對應map中的bar,列值對應map中的foo 對HBase表進行預分區,增大其MapReduce作業的并行度 合理的設計rowkey使其盡可能的分布在預先分區好的Region上 通過set hbase.client.scanner.caching設置合理的掃描緩存
- 使用HQL語句創建一個指向HBase的Hive表
- 通過HBase shell可以查看剛剛創建的HBase表的屬性
hbase(main):003:0> scan "xyz" ROW COLUMN+CELL 0 row(s) in 0.0060 seconds
- 使用HQL向HBase表中插入數據
- 在HBase端查看插入的數據
- 創建一個指向已經存在的HBase表的Hive表
- 在HBase下查看數據
- 在Hive下查看數據
?
參考資料:
Hive HBase Integration
?
?轉載于:https://www.cnblogs.com/MOBIN/p/5704001.html
總結
以上是生活随笔為你收集整理的Hive集成HBase详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FTP工具类开发
- 下一篇: 把docker当做绿色打包工具