HBase快速入門系列(8) | 一文教你HBase與Hive如何集成

      網友投稿 1047 2022-05-30

      大家好,我是不溫卜火,是一名計算機學院大數據專業(yè)大二的學生,昵稱來源于成語—不溫不火,本意是希望自己性情溫和。作為一名互聯網行業(yè)的小白,博主寫博客一方面是為了記錄自己的學習過程,另一方面是總結自己所犯的錯誤希望能夠幫助到很多和自己一樣處于起步階段的萌新。但由于水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只有csdn這一個平臺,博客主頁:https://buwenbuhuo.blog.csdn.net/

      此篇為大家?guī)淼氖荋Base與Hive的集成。

      目錄

      一. 兩者對比

      1. Hive

      2. HBase

      二. HBase與Hive集成使用

      1. 編譯jar包

      2. 環(huán)境準備

      3. 測試案例1

      4. 測試案例2

      標注: 此處為反爬蟲標記:讀者可自行忽略

      1

      2

      原文地址:https://buwenbuhuo.blog.csdn.net/

      一. 兩者對比

      1. Hive

      (1) 數據倉庫

      Hive的本質其實就相當于將HDFS中已經存儲的文件在Mysql中做了一個雙射關系,以方便使用HQL去管理查詢。

      (2) 用于數據分析、清洗

      Hive適用于離線的數據分析和清洗,延遲較高。

      (3) 基于HDFS、MapReduce

      Hive存儲的數據依舊在DataNode上,編寫的HQL語句終將是轉換為MapReduce代碼執(zhí)行。

      2. HBase

      (1) 數據庫

      是一種面向列存儲的非關系型數據庫。

      (2) 用于存儲結構化和非結構化的數據

      適用于單表非關系型數據的存儲,不適合做關聯查詢,類似JOIN等操作。

      (3) 基于HDFS

      數據持久化存儲的體現形式是Hfile,存放于DataNode中,被ResionServer以region的形式進行管理。

      (4) 延遲較低,接入在線業(yè)務使用

      面對大量的企業(yè)數據,HBase可以直線單表大量數據的存儲,同時提供了高效的數據訪問速度。

      二. HBase與Hive集成使用

      1. 編譯jar包

      由于HBase與Hive的集成的這兩個版本中無法兼容。所以,我們重新編譯:hive-hbase-handler-1.2.2.jar!!好氣!!

      步驟

      1. 新建一個Java項目名稱為hive-hbase-handler

      2. 找到源碼包所需要編譯的部分,copy到項目內

      3. 添加依賴(此包為hbase和hive的lib包里的所有文檔的整合,如有需要可私聊博主)

      4. 打包jar包

      5.替換原Jar包

      2. 環(huán)境準備

      1.因為我們后續(xù)可能會在操作Hive的同時對HBase也會產生影響,所以Hive需要持有操作HBase的Jar,那么接下來拷貝Hive所依賴的Jar包(或者使用軟連接的形式)。

      [bigdata@hadoop002 module]$ sudo vim /etc/profile export HBASE_HOME=/opt/module/hbase export HIVE_HOME=/opt/module/hive // 立即生效 [bigdata@hadoop002 module]$ source /etc/profile

      1

      2

      3

      4

      5

      6

      7

      軟連接

      [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/hbase-common-1.3.1.jar $HIVE_HOME/lib/hbase-common-1.3.1.jar [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/hbase-server-1.3.1.jar $HIVE_HOME/lib/hbase-server-1.3.1.jar [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/hbase-client-1.3.1.jar $HIVE_HOME/lib/hbase-client-1.3.1.jar [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/hbase-protocol-1.3.1.jar $HIVE_HOME/lib/hbase-protocol-1.3.1.jar [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/hbase-it-1.3.1.jar $HIVE_HOME/lib/hbase-it-1.3.1.jar [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar $HIVE_HOME/lib/htrace-core-3.1.0-incubating.jar [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-1.3.1.jar $HIVE_HOME/lib/hbase-hadoop2-compat-1.3.1.jar [bigdata@hadoop002 lib]$ ln -s $HBASE_HOME/lib/hbase-hadoop-compat-1.3.1.jar $HIVE_HOME/lib/hbase-hadoop-compat-1.3.1.jar

      1

      2

      3

      4

      5

      6

      7

      8

      9

      2. 在hive-site.xml中修改zookeeper的屬性

      [bigdata@hadoop002 conf]$ sudo vim hive-site.xml // 添加如下內容 hive.zookeeper.quorum hadoop002,hadoop003,hadoop004 The list of ZooKeeper servers to talk to. This is only needed for read/write locks. hive.zookeeper.client.port 2181 The port of ZooKeeper servers to talk to. This is only needed for read/write locks.

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      3. 測試案例1

      目標:建立Hive表,關聯HBase表,插入數據到Hive表的同時能夠影響HBase表。

      前提準備

      // 啟動所需要的服務 [bigdata@hadoop002 module]$ start-dfs.sh [bigdata@hadoop003 module]$ start-yarn.sh [bigdata@hadoop002 zookeeper-3.4.10]$ bin/start-allzk.sh [bigdata@hadoop002 hbase]$ bin/start-hbase.sh

      1

      2

      3

      4

      5

      6

      7

      1. 在Hive中創(chuàng)建表同時關聯HBase

      // 需要另開窗口 [bigdata@hadoop002 hive]$ bin/hive CREATE TABLE hive_hbase_emp_table( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      提示:完成之后,可以分別進入Hive和HBase查看,都生成了對應的表

      這是需要查看下Hbase里是否有表建立

      [bigdata@hadoop002 hbase]$ bin/hbase shell // 查看表格 hbase(main):001:0> list

      1

      2

      3

      4

      2. 在Hive中創(chuàng)建臨時中間表,用于load文件中的數據

      提示:不能將數據直接load進Hive所關聯HBase的那張表中

      CREATE TABLE emp( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int) row format delimited fields terminated by '\t';

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      3. 向Hive中間表中l(wèi)oad數據

      上傳數據

      hive> hive> load data local inpath '/opt/module/datas/emp.txt' into table emp;

      1

      4. 通過insert命令將中間表中的數據導入到Hive關聯HBase的那張表中

      hive> insert into table hive_hbase_emp_table select * from emp;

      1

      5. 查看Hive以及關聯的HBase表中是否已經成功的同步插入了數據

      Hive

      hive> select * from hive_hbase_emp_table;

      1

      HBase

      :

      hbase> scan ‘hbase_emp_table’

      1

      4. 測試案例2

      目標:在HBase中已經存儲了某一張表hbase_emp_table,然后在Hive中創(chuàng)建一個外部表來關聯HBase中的hbase_emp_table這張表,使之可以借助Hive來分析HBase這張表中的數據。(前提要先完成案例1)

      1. 在Hive中創(chuàng)建外部表

      CREATE EXTERNAL TABLE relevance_hbase_emp( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno") TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      2. 關聯后就可以使用Hive函數進行一些分析操作了

      // 可快速查看內容,第一次比較慢 hive (default)> select * from relevance_hbase_emp;

      1

      2

      HBase快速入門系列(8) | 一文教你HBase與Hive如何集成

      本次的分享就到這里了,

      好書不厭讀百回,熟讀課思子自知。而我想要成為全場最靚的仔,就必須堅持通過學習來獲取更多知識,用知識改變命運,用博客見證成長,用行動證明我在努力。

      如果我的博客對你有幫助、如果你喜歡我的博客內容,請“” “評論”“”一鍵三連哦!聽說的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。

      碼字不易,大家的支持就是我堅持下去的動力。后不要忘了關注我哦!

      Hadoop HBase Hive

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:公司有著 30 多年經驗的程序員被辭退了
      下一篇:Ceph Swift Api 配置與使用(三)【與云原生的故事】
      相關文章
      在线亚洲午夜理论AV大片| 亚洲人成网站在线播放2019| 久久精品国产亚洲AV未满十八| 亚洲精品人成电影网| 久久久亚洲欧洲日产国码农村| 亚洲av无码潮喷在线观看| 亚洲色偷偷综合亚洲AVYP| 亚洲乱亚洲乱妇无码麻豆| 亚洲日韩v无码中文字幕| 国产精品久久久亚洲| 亚洲AV一宅男色影视| 亚洲AV日韩精品久久久久久久| 亚洲AV无码专区国产乱码4SE | 一区二区亚洲精品精华液| 亚洲日本久久久午夜精品| 亚洲国产91在线| 亚洲日韩国产欧美一区二区三区| 亚洲中文无码永久免| 亚洲精品精华液一区二区| 国产精品亚洲一区二区三区久久 | 国产成人亚洲综合无码| 国产AV无码专区亚洲AV漫画| 亚洲伊人久久大香线蕉综合图片| 亚洲乱码无码永久不卡在线 | 亚洲欧洲一区二区| 亚洲国产电影在线观看| 丁香婷婷亚洲六月综合色| 亚洲精品乱码久久久久久蜜桃图片| 亚洲AV永久无码精品网站在线观看 | 亚洲AV日韩AV无码污污网站| 亚洲Av无码乱码在线播放| 久久综合亚洲色HEZYO国产| 久久综合图区亚洲综合图区| 久久亚洲日韩看片无码| 亚洲免费闲人蜜桃| 亚洲AV永久无码精品网站在线观看 | 久久久久国产亚洲AV麻豆| 亚洲成Av人片乱码色午夜| 亚洲精品网站在线观看你懂的| 激情综合亚洲色婷婷五月| 亚洲av无码一区二区三区在线播放 |