中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase 與Hive數據交互整合過程詳解

發布時間:2020-05-31 22:30:01 來源:網絡 閱讀:3561 作者:ChinaUnicom110 欄目:關系型數據庫

Hive和Hbase整合理論

1、為什么hive要和hbase整合

2、整合的優缺點

優點:

(1).Hive方便地提供了Hive QL的接口來簡化MapReduce的使用,

  而HBase提供了低延遲的數據庫訪問。如果兩者結合,可以利

  用MapReduce的優勢針對HBase存儲的大量內容進行離線的計算和分析。

(2).操作方便,hive提供了大量系統功能

缺點:

  性能的損失,hive有這樣的功能, 他支持通過類似sql語句的語法來操作hbase

  中的數據, 但是速度慢。


3、整合需要做什么樣的準備工作

4、整合后的目標

(1). 在hive中創建的表能直接創建保存到hbase中。

(2). 往hive中的表插入數據,數據會同步更新到hbase對應的表中。

(3). hbase對應的列簇值變更,也會在Hive中對應的表中變更。

(4). 實現了多列,多列簇的轉化:(示例:hive中3列對應hbase中2列簇)


5、hive和Hbase整合后如果通信?

查看hive和Hbase通信圖:

主要是通過hive 的lib目錄下的hive-hbase-handler-1.2.1.jar來實現hive

和Hbase通信。


整合過程(案例操作)

在hive中創建的表的數據直接保存在hbase中。

第一: 首先啟動hive.進入交互式界面,然后創建表。

hive版本: apache-hive-1.2.1

hbase版本:apache-hbase-1.1.2

hadoop版本: hadoop-2.7.3

第一: 創建hbase能識別的表。

建表語句:

create table if not exists hive_hbase(

id int,

name String,

age int,

sex String,

address String

)

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf_info:eName,cf_info:eAge,cf_info:eSex,cf_beizhu:eAddress")

TBLPROPERTIES ("hbase.table.name" = "ns2:hive_hbase01");


注意: 此處的 org.apache.hadoop.hive.hbase.HBaseStorageHandler 類是hive的lib包下的,需要替換成.hive-1.2.1版本的jar包。否則會報錯提示找不到這個類。

錯誤提示:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V

也不能hive版本過高。比如2.x版本會報錯

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

要確保hive目錄的lib目錄下有mysql-connector的數據庫包。否則也會報錯。

創建后可以在hbase中查看一下表。list

第二:

自己準備測試數據。此處省略

create table  test(

id  int,

name string) 

row format delimited fields terminated by ',' 

lines terminated by '\n' 

stored as textfile;

加載數據到表中:

 load data local inpath '/usr/local/test01.txt' overwrite into table test;

通過結果集的方式插入數據到表中

 insert overwrite table hive_hbase select * from test;

此處會跑mapreduce程序。過程省略。

第三: 在hbase中查詢插入的 數據

 select *  from hive_hbase;

20170616,zhangshaoqi,22,nan,jincheng

20170617,xuqianya,29,nv,beijing

20170618,xiaolin,29,nv,jincheng

20170619,xiaopan,33,nan,guizhou

20170620,xiaohu,26,nan,shouzhou

1 row(s) in 3.19 seconds
第四:在hbase中掃描這個表,查看是否有數據

  scan 'ns2:hive_hbase01'

第五: hive訪問已經存在的hbase

 需要使用external 類型的外部表,否則會報錯

REATE EXTERNAL TABLE hbase_table_3(key int, value string)    
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")   
TBLPROPERTIES("hbase.table.name" = "student"); 
hive> CREATE EXTERNAL TABLE hbase_table_3(key int, value string)    
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")   
    > TBLPROPERTIES("hbase.table.name" = "student"); 
OK
Time taken: 1.21 seconds

注意:如果hbase中列簇名name數據變更,那么hive中查詢結果也會相應的變更,如果hbase中不是其他列簇
    內容更新則hive中查詢結果不顯示

就這些了,有問題歡迎討論


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 丹凤县| 海门市| 永泰县| 青川县| 栾城县| 凤城市| 万全县| 深水埗区| 石家庄市| 怀远县| 紫阳县| 兰考县| 洛扎县| 南城县| 丰都县| 辽中县| 南澳县| 三都| 高阳县| 当阳市| 武义县| 汉寿县| 左贡县| 新绛县| 奉化市| 东宁县| 徐州市| 和龙市| 阿巴嘎旗| 福清市| 平度市| 安吉县| 永定县| 新巴尔虎左旗| 平潭县| 米泉市| 昭通市| 潍坊市| 武功县| 灌云县|