hive 初認識

結構
Hive 是建立在hadoop上的數據倉庫架構,它提供了一系列的工具,可以進行數據提取轉換加載(這個過程叫做ETL),這是一種可以存儲,查詢和分析存儲在hadoop中的大規模數據的機制.Hive定義了簡單的類SQL查詢語句 成為hql,他允許數據SQL的用戶查詢數據.同時 這個語言也允許數據mapreduce開發者的開發自定義mapper和reducer來處理內建的復雜的分析工作.
image

Hive的核心
hive的核心是Driver驅動引擎,驅動驅動有四部分組成:
1>解釋器:解釋器的作用是將HiveSQL語句轉換為語法樹(AST)
2>編譯器:編譯器是講語法樹編譯為邏輯執行計劃
3>優化器:優化是對邏輯執行計劃進行優化
4>執行器:執行器是調用底層的運行康佳執行邏輯執行計劃.

Hive的底層存儲
Hive的數據是存儲在HDFS上的 Hive中的庫和表可以看做是HDFS上數據做的一個映射,所以Hive必須是運行在Hadoop集群上的.

Hive程序的執行過程
hive中的執行器,試講最終要執行的MapReduce程序放在YARN上以一系列的Job的方式執行.

Hive的元數據的存儲
HIve的元數據是一般是存儲在MYSQL這種關系型數據庫上的,Hive和MYSQL之間通過MetaStore服務交互.

image

Hive客戶端
1>cli命令行客戶端:采用交互窗口.用hive命令行和Hive進行通信
2>HiveSever2客戶端:yongThrift寫進行通信,Thrift是不同語言之間的轉化器,是連接不同語言程序間的協議,通過JDBC或者ODBC去訪問Hive
3>HWI客戶端:hive自帶的一個客戶端,一般不用
4>HUE客戶端:通過Web頁面來和Hive進行交互,使用的比較多.

Hive與HADHOOP的關系
image

Hive構建在Hadoop之上
1>HQL中對查詢語句的解析,優化,生成查詢計劃是由Hive完成的
2>所有的數據都是存儲在Hadoop中
3>查詢計劃被轉換為MapReduce任務,在Hadoop中執行(有些查詢沒MR任務,入select * from table)
4>Hadoop和Hive都是使用UTF-8編碼的

Hive和普通關系數據庫的異同
image

(1)查詢語言.有SQL被廣泛的應用在數據倉庫中.因此,專門針對Hive的特性設計了類SQL的查詢語言HQL 數據SQL開發者可以很方便的使用Hive進行開發的
(2)數據存儲位置,Hive是建立在HAdoop之上的.所以HIve的數據都是存儲在HDFS中的,而數據庫則可以將數據保存在這塊設備或者本地文件系統中
(3)數據格式.Hive中沒有定義專門的數據格式,數據格式可以有用戶指定,用戶定義數據格式需要指定三個屬性:列分隔符(通常為空格,'t','x001'),行分隔符以及讀取文件數據的方法(Hive中默認有三個文件格式TextFile,SequenceFile以及RCFile),由于加載數據的過程中,不需要從用戶數據格式到Hive定義的數據格式轉換,因此Hive在加載的過程中不會對數據本身進行任何的修改,而只是將數據內容復制或者移動到相應的HDFS目錄中.而在數據庫中,不同的數據庫有不同的存儲引擎,定義了自己的數據格式,所有的數據都會按照一定的住址存儲,因此數據庫加載數據的過程會比較耗時.
(4)數據更新.由于Hive是針對數據倉庫應用設計的.而數據倉庫的內容都鐸寫少的,因此Hive中不支持數據的改寫和添加,所有的數據都是在加載的時候中確定好的.而數據庫中的數據通常是需要經常進行修改的,因此可以使用insert into ...values 添加數據,使用update ....set修改數據.
(5)索引,之前已經說過Hive在加載數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描,因此也沒有對數據中的某些Key建立索引,Hive要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高,數據庫中,通常會針對一個或者幾個列建立索引,因此對于少量的特定條件的數據的訪問,數據庫中有很高的效率,較低的延遲,由于數據的訪問延遲較高沒界定了Hive不適合在線數據查詢.
(6)執行,Hive中的大多數查詢的執行師通過Hadoop提供的MapReduce來實現的,而數據庫通常有自己的執行引擎.
(7)執行延遲:之前提到,Hive在查詢數據的時候,由于沒有索引,需要掃描整個表,因此延遲較高,另外一個導致Hive執行延遲較高的因素是MapReduce框架,由于MapReduce本身具有較高的延遲,因此在利用MapReduce執行Hive查詢時,也會有較高的延遲,相對的,數據庫的執行延遲較低,當然,這個是有條件的,即數據量小,如果數據量很大,則延遲會遠超過Hive
(8)可擴展性,由于Hive是建立在Hadoop之上的.因此Hive的可擴展性適合Hadoop的可擴展性是一致的,而數據庫由于ACID語句的嚴格限制,擴展性非常有限,目前先進的并行數據庫Oracle在理論上的擴展能力也只有100臺左右
(8)數據規模:由于Hive建立在集群上并行利用MapReduce進行并行計算,因此可以支持很大規模的數據,對飲的,數據庫可以支持的數據庫規模較小.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393629.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git使用(2)

1.遠程倉庫 a SSHKEY 第1步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shel…

郵件中的商務英語

一、常見縮寫 CC carbon copy:抄送 FYI for your information:供你參考 EOD end of the day BTW By the way:順便提一下 COB close of the business 這兩個詞都是指下班前。需要催促某人在下班前給到回復的時候可以用用它們。 eg: Ple…

vue 橫向菜單滾動定位_使用vue組件+iscroll實現一個橫向菜單,不能正確滑動

使用vue組件iscroll實現一個橫向菜單,可是卻不能滑動,給父元素ul寫死一個寬度可以滑動。但是,我在computed里計算寬度,直接路由進去不能滑動,當我進入別的組件(切換路由)回來又可以滑動了示例地址:http://o…

leetcode1353. 最多可以參加的會議數目(貪心算法)

給你一個數組 events&#xff0c;其中 events[i] [startDayi, endDayi] &#xff0c;表示會議 i 開始于 startDayi &#xff0c;結束于 endDayi 。 你可以在滿足 startDayi < d < endDayi 中的任意一天 d 參加會議 i 。注意&#xff0c;一天只能參加一個會議。 請你返…

計算機組成原理實驗讀r1,計算機組成原理實驗一

計算機組成原理實驗一 (5頁)本資源提供全文預覽&#xff0c;點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧&#xff0c;查找使用更方便哦&#xff01;8.90 積分計算機組成原理實驗計算機組成原理實驗第一章、TEC-5 計算機組成實驗箱簡介運算器運算器74181通用寄存器通用寄存器…

如何使用Kotlin構建具有在線狀態的Android Messenger應用

by Neo Ighodaro由新Ighodaro When building a chat application, it is essential to have an online presence feature. It is essential because your users will like to know when their friends are online, and are more likely to respond to their messages in real …

Spark常見問題解決辦法

以下是在學習和使用spark過程中遇到的一些問題&#xff0c;記錄下來。 1、首先來說說spark任務運行完后查錯最常用的一個命令&#xff0c;那就是把任務運行日志down下來。 程序存在錯誤&#xff0c;將日志down下來查看具體原因!down日志命令&#xff1a;yarn logs -application…

linux下安裝php的swoole擴展模塊(安裝后php加載不出來?)

應開發同事要求&#xff0c;需要安裝php的擴展模塊swoole。 swoole是一種PHP高級Web開發框架&#xff0c;框架不是為了提升網站的性能&#xff0c;而是為了提升網站的開發效率&#xff0c;以最少的性能損耗&#xff0c;換取最大的開發效率。 假設服務器上php服務版本為php5.6.2…

autosar工具鏈_Autosar開發與手寫代碼開發的區別

Autosar開發流程1.BSW開發主要應用工具鏈&#xff08;Vector等工具&#xff0c;具體可以百度搜索Autosar配置工具&#xff09;來配置&#xff0c;復雜驅動的代碼需要手寫&#xff0c;但是也要符合Autosar的接口標準&#xff0c;主要包括&#xff0c;CAN通信配置、數字輸入配置、…

山東計算機類好的民辦大學,2021年山東所有民辦大學名單及排名(教育部)

高考考上一個好的大學&#xff0c;是每位考生和家長的一個夢想,但是選擇一個適合自己的大學也非常重要。本文高考助手網幫各位考生整理了關于山東本地區所有的民辦大學名單、山東所有的民辦大學分數線排名、山東民辦大學文理科投檔線等相關知識&#xff0c;各位考生在填報志愿的…

leetcode1536. 排布二進制網格的最少交換次數(貪心算法)

給你一個 n x n 的二進制網格 grid&#xff0c;每一次操作中&#xff0c;你可以選擇網格的 相鄰兩行 進行交換。 一個符合要求的網格需要滿足主對角線以上的格子全部都是 0 。 請你返回使網格滿足要求的最少操作次數&#xff0c;如果無法使網格符合要求&#xff0c;請你返回 …

xml文檔包含html代碼_為什么文檔很重要,以及為什么應將其包含在代碼中

xml文檔包含html代碼There are a plethora of acronyms when it comes to software development. KISS, DRY, SOLID… and so on and so forth. But, when it comes to documenting or commenting your code, there is no simple catchphrase.關于軟件開發&#xff0c;有很多首…

python 版本分布式鎖

此文章&#xff0c;實現python 版本的分布式鎖&#xff0c;java版本的可以使用curator很容易實現&#xff0c;python版本如下在做分布式系統開發的時候&#xff0c;分布式鎖可以說是必需的一個組件。最近做了一些調研和嘗試&#xff0c;經過對比&#xff0c;基于ZooKeeper的分布…

JavaScript數組(2)---遍歷/迭代方法 8種

最近工作中經常涉及到數據的處理&#xff0c;數組尤其常見&#xff0c;經常需要對其進行遍歷、轉換操作&#xff0c;網上的文章零零散散&#xff0c;不得已自己又找出紅寶書來翻出來看&#xff0c;順便記一筆&#xff0c;便于以后查詢。 數組常用的方法 ECMAScript5為數組定義了…

用例設計:思維導圖orExcel

一、 某次緊急發版時使用思維導圖來進行了用例的設計&#xff0c;很被導圖多分支羅列、在單一分支上層層遞進設計模式的吸引&#xff0c;最終看到由版本主題開枝散葉衍發出的結構性用例時非常開心。從此&#xff0c;幾個版本的迭代都使用思維導圖進行用例設計。 然而部門制度關…

class對象和class文件_Class文件格式

我們知道Java是一門跨平臺的語言&#xff0c;我們編寫的Java代碼會被編譯成中間class文件以讓Java虛擬機解析運行。而Java虛擬機規范僅僅描述了抽象的Java虛擬機&#xff0c;在實現具體的Java虛擬機時&#xff0c;僅指出了設計規范。Java虛擬機的實現必須體現規范中的內容&…

2018計算機應用基礎考試6,2018結構工程師《計算機應用基礎》試題(6)

大家做好準備迎接2018考試了嗎?出國留學網為您整理了“2018結構工程師《計算機應用基礎》試題(6)”&#xff0c;跟著出國留學網來了解一下吧。要相信只要自己有足夠的實力&#xff0c;無論考什么都不會害怕!2018結構工程師《計算機應用基礎》試題(6)1、下列存儲器中&#xff0…

leetcode1282. 用戶分組(貪心算法)

有 n 位用戶參加活動&#xff0c;他們的 ID 從 0 到 n - 1&#xff0c;每位用戶都 恰好 屬于某一用戶組。給你一個長度為 n 的數組 groupSizes&#xff0c;其中包含每位用戶所處的用戶組的大小&#xff0c;請你返回用戶分組情況&#xff08;存在的用戶組以及每個組中用戶的 ID&…

mysql解鎖_mysql 解鎖

show OPEN TABLES where In_use > 0;show processlist;show status like Table%;show status like %lock%;show OPEN TABLES where In_use > 0&#xff1b;//1.查看當前數據庫鎖表的情況SELECT * FROM information_schema.INNODB_TRX;//2.殺掉查詢結果中鎖表的trx_mysql_…

強制換行和禁止換行

強制換行&#xff1a;word-break: break-all; 只對英文起作用&#xff0c;以字母作為換行依據word-wrap: break-word; 只對英文起作用&#xff0c;以單詞作為換行依據white-space: pre-wrap; 只對中文起作用&#xff0c;強制換行禁止換行&#xff1a;white-space: now…