本篇內容主要講解“hive的工作機制是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“hive的工作機制是什么”吧!
皇姑網站建設公司成都創(chuàng)新互聯公司,皇姑網站設計制作,有大型網站制作公司豐富經驗。已為皇姑上1000家提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿營銷網站建設要多少錢,請找那個售后服務好的皇姑做網站的公司定做!
Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類似SQL查詢功能。
hive的工作機制
1、在hive中建一個庫
---在hive的元數據庫中記錄
---在hdfs的默認路徑下/user/hive/warehouse/ 建一個以 "庫名.db" 為名字的文件夾
2、在hive的庫中建表
---在hive的元數據庫中記錄
---在hdfs的默認路徑下 /user/hive/warehouse/庫.db/ 下建一個 “表名” 為名字的文件夾
3、hive中內部表和外部表的區(qū)別
----建表時,內部表不用指定數據存放的路徑,默認都放在 /user/hive/warehouse/
----外部表建表時,要指定external關鍵字,同時要指定數據存放的路徑(要分析的數據在哪就指定哪)
----內部表刪除時,會清掉元數據,同時刪掉表文件夾及其中的數據
----外部表刪除時,只清除元數據
4、hive表的數據可以存成多種文件格式,最普通的是textfile,但是性能比較好的是 sequenceFile格式
----sequencefile 是一種二進制文件
----文件內的內容組織形式為key:value
----在hadoop有一個優(yōu)化場景可以使用sequencefile
小文件合并成大文件:
---讀一個小文件,就把小文件的文件名作為key,內容作為value,追加到一個大sequencefile文件中
----sequencefile文件格式支持較好的壓縮性能,而且hadoop的mapreduce程序可以直接從sequencefile的壓縮文件中直接讀取數據
5、在linux的shell中直接運行HQL語句的方法
//cli shell
hive -S -e 'select country,count(*) from tab_ext' > /home/hadoop/hivetemp/e.txt
這種運行機制非常重要,在生產中就是用這種機制來將大量的HQL邏輯組織在一個批量執(zhí)行的shell腳本程序中
6、分區(qū)表
分區(qū)表的意義在于可以針對一個分區(qū)來進行統(tǒng)計從而減小統(tǒng)計的數據集
創(chuàng)建分區(qū)表要使用關鍵字 partitioned by (country string)
導入數據到分區(qū)表的時候需要指定這份數據所屬的分區(qū) load data ..... partition(country='china')
hive就會在hdfs的表目錄建一個分區(qū)子文件夾,名字為 country=china ,這一個分區(qū)的數據就放在該子文件夾下
針對分區(qū)進行的查詢和統(tǒng)計只要指定 where條件,將分區(qū)標識看成一個普通表字段就可以 where country='china'
到此,相信大家對“hive的工作機制是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!