Hive與mysql的區別

2021-10-13 01:35:55 字數 2444 閱讀 1417

hive採用了類sql的查詢語言hql,因此很容易將hive理解為資料庫。其實從結構上來看,hive和資料庫除了擁有類似的查詢語言,再無類似之處。

資料庫可以用在oltp的應用中,但是hive是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解hive的特性。

hive不適合用於聯機事務處理(oltp),也不提供實時查詢功能。它最適合應用在基於大量不可變資料的批處理作業。hive 的特點是可伸縮(在hadoop 的集群上動態的新增裝置),可擴充套件、容錯、輸入格式的鬆散耦合。hive的入口是driver,執行的sql語句首先提交到driver驅動,然後調compiler解釋驅動,最終解釋成mapreduce任務執行,最後將結果返回。

比較項關聯式資料庫

hive

ansi sql

支援不完全支援

更新update insert delete

insert overwrite\ into table

事務支援

支援(部分支援)

模式寫模式讀模式

儲存位置

塊裝置、本地檔案系統

hdfs延時低

高多表插入

不支援支援

子查詢完全支援

只能用在from子句中

檢視updatable

read-only

可擴充套件性低高

資料規模

實時響應

毫秒級秒級

解釋1、查詢語言:由於sql被廣泛的應用在資料倉儲中,因此,專門針對hive的特性設計了類sql的查詢語言hql。熟悉sql開發的開發者可以很方便的使用hive進行開發。

2、資料儲存位置:hive是建立在hadoop之上的,所有hive的資料都是儲存在hdfs中的。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。

3、資料格式:hive中沒有定義專門的資料格式,資料格式可以由使用者指定,使用者定義資料格式需要指定三個屬性:列分隔符(通常為空格、"\t"、"\x001")、行分隔符("\n")以及讀取檔案資料的方法(hive中預設有三個檔案格式textfile、sequencefile以及rcfile)。由於在載入資料的過程中,不需要從使用者資料格式到hive定義的資料格式的轉換,因此,hive在載入的過程中不會對資料本身進行任何修改,而只是將資料內容複製或者移動到相應的hdfs目錄中。而在資料庫中,不同的資料庫有不同的儲存引擎,定義了自己的資料格式。所有資料都會按照一定的組織儲存,因此,資料庫載入資料的過程會比較耗時

4、資料更新:由於hive是針對資料倉儲應用設計的,而資料倉儲的內容是讀多寫少的。因此,hive中不支援對資料的改寫和新增,所有的資料都是在載入的時候中確定好的。而資料庫中的資料通常是需要經常進行修改的,因此可以使用insert into...values新增資料,使用update…set修改資料。

6、執行:hive中大多數查詢的執行是通過hadoop提供的mapreduce來實現的(類似select * from tbl的查詢不需要mapreduce)。而資料庫通常有自己的執行引擎。

7、執行延遲:之前提到,hive在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。另外乙個導致hive執行延遲高的因素是mapreduce框架。由於mapreduce本身具有較高的延遲,因此在利用mapreduce執行hive查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時候,hive的平行計算顯然能體現出優勢。

8、可擴充套件性:由於hive是建立在hadoop之上的,因此hive的可擴充套件性是和hadoop的可擴充套件性是一致的。而資料庫由於acid語義的嚴格限制,擴充套件性非常有限。目前最先進的並行資料庫oracle在理論上的擴充套件能力也只有100臺左右。

9、資料規模:由於hive建立在集群上並可以利用mapreduce進行平行計算,因此可以支援很大規模的資料;對應的,資料庫可以支援的資料規模較小。

Hive與MySQL的區別

hive與mysql的區別hive採用了類sql的查詢語言hql hive query language 除了hql之外,其餘無任何相似的地方。hive是為了資料倉儲設計的。儲存位置 hive在hadoop上 mysql將資料儲存在裝置或本地系統中 資料更新 hive不支援資料的改寫和新增,是在載入...

Hadoop Pig與Hive的區別

請允許我很無聊的把飛機和火車拿來做比較,因為2者根本沒有深入的可比性,雖然兩者都是一種高速的交通工具,但是具體的作用範圍是截然不同的,就像hive和pig都是hadoop中的專案,並且hive和pig有很多共同點,但hive還似乎有點資料庫的影子,而pig基本就是乙個對mapreduce實現的工具 ...

Hive與Hbase的區別

以下 由網上內容 整理 hive是為了簡化編寫mapreduce程式而生的,使用mapreduce做過資料分析的人都知道,很多分析程式除業務邏輯不同外,程式流程基本一樣。在這種情況下,就需要hive這樣的使用者程式設計介面。hive本身不儲存和計算資料,它完全依賴於hdfs和mapreduce,hi...