日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HBase 与Hive数据交互整合过程详解

發布時間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase 与Hive数据交互整合过程详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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中查詢結果不顯示

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


本文轉自 ? ChinaUnicom110 ? 51CTO博客,原文鏈接:http://blog.51cto.com/xingyue2011/1939096

總結

以上是生活随笔為你收集整理的HBase 与Hive数据交互整合过程详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。