真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HBase與Hive數(shù)據(jù)交互整合過程詳解

Hive和Hbase整合理論

我們提供的服務有:成都做網(wǎng)站、成都網(wǎng)站建設、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、遼中ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的遼中網(wǎng)站制作公司

1、為什么hive要和hbase整合

2、整合的優(yōu)缺點

優(yōu)點:

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

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

  用MapReduce的優(yōu)勢針對HBase存儲的大量內(nèi)容進行離線的計算和分析。

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

缺點:

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

  中的數(shù)據(jù), 但是速度慢。

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

4、整合后的目標

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

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

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

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

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

查看hive和Hbase通信圖:

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

和Hbase通信。

整合過程(案例操作)

在hive中創(chuàng)建的表的數(shù)據(jù)直接保存在hbase中。

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

hive版本: apache-hive-1.2.1

hbase版本:apache-hbase-1.1.2

hadoop版本: hadoop-2.7.3

第一: 創(chuàng)建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的數(shù)據(jù)庫包。否則也會報錯。

創(chuàng)建后可以在hbase中查看一下表。list

第二:

自己準備測試數(shù)據(jù)。此處省略

create table  test(

id  int,

name string) 

row format delimited fields terminated by ',' 

lines terminated by '\n' 

stored as textfile;

加載數(shù)據(jù)到表中:

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

通過結果集的方式插入數(shù)據(jù)到表中

 insert overwrite table hive_hbase select * from test;

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

第三: 在hbase中查詢插入的 數(shù)據(jù)

 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中掃描這個表,查看是否有數(shù)據(jù)

  scan 'ns2:hive_hbase01'

第五: hive訪問已經(jīng)存在的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數(shù)據(jù)變更,那么hive中查詢結果也會相應的變更,如果hbase中不是其他列簇
    內(nèi)容更新則hive中查詢結果不顯示

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



網(wǎng)站欄目:HBase與Hive數(shù)據(jù)交互整合過程詳解
文章鏈接:http://weahome.cn/article/jsecgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部