這篇文章主要介紹“Hive的基本概念”,在日常操作中,相信很多人在Hive的基本概念問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Hive的基本概念”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
Hive簡(jiǎn)介
什么是Hive
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供類(lèi)SQL查詢(xún)功能(HQL)。
其本質(zhì)是將SQL轉(zhuǎn)換為MapReduce的任務(wù)進(jìn)行運(yùn)算,底層由HDFS來(lái)提供數(shù)據(jù)的存儲(chǔ),hive可以理解為一個(gè)將SQL轉(zhuǎn)換為MapReduce的任務(wù)的工具。
Hive可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)與計(jì)算
數(shù)據(jù)存儲(chǔ)依賴(lài)于HDFS
數(shù)據(jù)計(jì)算依賴(lài)于MapReduce
為什么使用Hive
直接使用hadoop所面臨的問(wèn)題
人員學(xué)習(xí)成本太高
項(xiàng)目周期要求太短
MapReduce實(shí)現(xiàn)復(fù)雜查詢(xún)邏輯開(kāi)發(fā)難度太大
為什么要使用Hive
操作接口采用類(lèi)SQL語(yǔ)法,提供快速開(kāi)發(fā)的能力。
避免了去寫(xiě)MapReduce,減少開(kāi)發(fā)人員的學(xué)習(xí)成本。
功能擴(kuò)展很方便。
Hive的特點(diǎn)
可擴(kuò)展
Hive可以自由的擴(kuò)展集群的規(guī)模,一般情況下不需要重啟服務(wù)。
延展性
Hive支持用戶(hù)自定義函數(shù),用戶(hù)可以根據(jù)自己的需求來(lái)實(shí)現(xiàn)自己的函數(shù)。
容錯(cuò)
良好的容錯(cuò)性,節(jié)點(diǎn)出現(xiàn)問(wèn)題SQL仍可完成執(zhí)行。
Hive架構(gòu)
元數(shù)據(jù):
描述數(shù)據(jù)的數(shù)據(jù)就是元數(shù)據(jù)
表的名字,
表的列
列的類(lèi)型
Hive內(nèi)部執(zhí)行過(guò)程:
解釋器 -> 編譯器(會(huì)使用到元數(shù)據(jù)) -> 優(yōu)化器 -> 執(zhí)行器
基本組成
用戶(hù)接口:包括CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)為shell命令行;JDBC/ODBC是Hive的JAVA實(shí)現(xiàn),與傳統(tǒng)數(shù)據(jù)庫(kù)JDBC類(lèi)似;WebGUI是通過(guò)瀏覽器訪(fǎng)問(wèn)Hive。
元數(shù)據(jù)存儲(chǔ):通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)如mysql/derby中。Hive 將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。Hive 中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。
**解釋器、編譯器、優(yōu)化器、執(zhí)行器:**完成HQL 查詢(xún)語(yǔ)句從詞法分析、語(yǔ)法分析、編譯、優(yōu)化以及查詢(xún)計(jì)劃的生成。生成的查詢(xún)計(jì)劃存儲(chǔ)在HDFS 中,并在隨后有MapReduce 調(diào)用執(zhí)行。
Hive與Hadoop的關(guān)系
Hive利用HDFS存儲(chǔ)數(shù)據(jù),利用MapReduce查詢(xún)分析數(shù)據(jù)
Hive與傳統(tǒng)數(shù)據(jù)庫(kù)對(duì)比
hive用于海量數(shù)據(jù)的離線(xiàn)數(shù)據(jù)分析
1.數(shù)據(jù)格式。Hive中沒(méi)有定義專(zhuān)門(mén)的數(shù)據(jù)格式
數(shù)據(jù)格式可以由用戶(hù)指定,用戶(hù)定義數(shù)據(jù)格式需要指定三個(gè)屬性:
列分隔符(通常為空格、”\t”、”\x001″)、
行分隔符(”\n”)以及
讀取文件數(shù)據(jù)的方法(Hive 中默認(rèn)有三個(gè)文件格式 TextFile,SequenceFile 以及 RCFile)。
2.Hive在加載數(shù)據(jù)的過(guò)程中,不需要從用戶(hù)數(shù)據(jù)格式到 Hive 定義的數(shù)據(jù)格式的轉(zhuǎn)換。
3.Hive 在加載的過(guò)程中==不會(huì)對(duì)數(shù)據(jù)本身進(jìn)行任何修改,甚至不會(huì)對(duì)數(shù)據(jù)進(jìn)行掃描。==而只是將數(shù)據(jù)內(nèi)容復(fù)制或者移動(dòng)到相應(yīng)的 HDFS 目錄中。
4.Hive 中不支持對(duì)數(shù)據(jù)的改寫(xiě)和添加,所有的數(shù)據(jù)都是在加載的時(shí)候中確定好的。
5.Hive 在加載數(shù)據(jù)的過(guò)程中不會(huì)對(duì)數(shù)據(jù)中的某些 Key 建立索引。Hive 要訪(fǎng)問(wèn)數(shù)據(jù)中滿(mǎn)足條件的特定值時(shí),需要暴力掃描整個(gè)數(shù)據(jù),因此訪(fǎng)問(wèn)延遲較高。由于數(shù)據(jù)的訪(fǎng)問(wèn)延遲較高,決定了Hive 不適合在線(xiàn)數(shù)據(jù)查詢(xún)。
6.Hive 是建立在 Hadoop 之上的,因此 Hive 的可擴(kuò)展性是和 Hadoop 的可擴(kuò)展性是一致的。
總結(jié):hive具有sql數(shù)據(jù)庫(kù)的外表,但應(yīng)用場(chǎng)景完全不同,hive只適合用來(lái)做批量數(shù)據(jù)統(tǒng)計(jì)分析
Hive的數(shù)據(jù)存儲(chǔ)
1、Hive中所有的數(shù)據(jù)都存儲(chǔ)在 HDFS 中,沒(méi)有專(zhuān)門(mén)的數(shù)據(jù)存儲(chǔ)格式(可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE等)
2.只需要在創(chuàng)建表的時(shí)候告訴 Hive 數(shù)據(jù)中的列分隔符和行分隔符,Hive 就可以解析數(shù)據(jù)。
3.Hive 中包含以下數(shù)據(jù)模型:DB、Table,External Table,Partition,Bucket。
db:在hdfs中表現(xiàn)為${hive.metastore.warehouse.dir}目錄下一個(gè)文件夾
table:在hdfs中表現(xiàn)所屬db目錄下一個(gè)文件夾
external table:與table類(lèi)似,不過(guò)其數(shù)據(jù)存放位置可以在任意指定路徑
partition:在hdfs中表現(xiàn)為table目錄下的子目錄
bucket:在hdfs中表現(xiàn)為同一個(gè)表目錄下根據(jù)hash散列之后的多個(gè)文件
到此,關(guān)于“Hive的基本概念”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
本文名稱(chēng):Hive的基本概念-創(chuàng)新互聯(lián)
URL分享:http://www.rwnh.cn/article26/dcoecg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、云服務(wù)器、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、面包屑導(dǎo)航、軟件開(kāi)發(fā)、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容