Hive和資料庫比較

2021-08-08 02:54:35 字數 2216 閱讀 1726

由於 hive 採用了 

sql 

的查詢語言 

hql,因此很容易將 

hive 

理解為資料庫。其實從結構上來看,

hive 

和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 

hive 

和資料庫的差異。資料庫可以用在 

online 

的應用中,但是

hive 

是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解 

hive 

的特性。

由於sql被廣泛的應用在資料倉儲中,因此,專門針對

hive

的特性設計了類

sql的查詢語言

hql。熟悉

sql開發的開發者可以很方便的使用

hive

進行開發。

hive 是建立在 

hadoop 

之上的,所有 

hive 

的資料都是儲存在 

hdfs 

中的。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。

hive 中沒有定義專門的資料格式,資料格式可以由使用者指定,使用者定義資料格式需要指定三個屬性:列分隔符(通常為空格、」\t」

、」\x001″

)、行分隔符(」\n」

)以及讀取檔案資料的方法(hive 

中預設有三個檔案格式textfile,sequencefile以及rcfile)。由於在載入資料的過程中,不需要從使用者資料格式到 hive 

定義的資料格式的轉換,因此,

hive

在載入的過程中不會對資料本身進行任何修改,而只是將資料內容複製或者移動到相應的hdfs

目錄中。而在資料庫中,不同的資料庫有不同的儲存引擎,定義了自己的資料格式。所有資料都會按照一定的組織儲存,因此,資料庫載入資料的過程會比較耗時。

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

新增資料,使用 

update … set

修改資料。

之前已經說過,hive在載入資料的過程中不會對資料進行任何處理,甚至不會對資料進行掃瞄,因此也沒有對資料中的某些

key建立索引。hive

要訪問資料中滿足條件的特定值時,需要暴力掃瞄整個資料,因此訪問延遲較高。由於 

mapreduce 

的引入, 

hive 

可以並行訪問資料,因此即使沒有索引,對於大資料量的訪問,

hive 

hive中大多數查詢的執行是通過 

hadoop 

提供的 

mapreduce 

來實現的(類似 

select * from tbl

的查詢不需要

mapreduce

)。而資料庫通常有自己的執行引擎。

之前提到,hive 在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。另外乙個導致 

hive 

執行延遲高的因素是 

mapreduce

框架。由於

mapreduce 

本身具有較高的延遲,因此在利用

mapreduce 

執行hive

查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時 候,

hive

的平行計算顯然能體現出優勢。

由於hive是建立在

hadoop

之上的,因此

hive

的可擴充套件性是和

hadoop

的可擴充套件性是一致的(世界上最大的

hadoop 

集群在 

yahoo!

,2009

年的規模在

4000 

臺節點左右)。而資料庫由於 

acid 

語義的嚴格限制,擴充套件行非常有限。目前最先進的並行資料庫 

oracle 

在理論上的擴充套件能力也只有

100臺左右。

由於hive建立在集群上並可以利用

mapreduce

進行平行計算,因此可以支援很大規模的資料;對應的,資料庫可以支援的資料規模較小。

Hive和資料庫比較

由於 hive 採用了類似sql 的查詢語言 hql hive query language 因此很容易將 hive 理解為資料庫。其實從結構上來看,hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 hive 和資料庫的差異。資料庫可以用在 online 的應用中,但是...

Hive 和資料庫的異同

摘要 由於 hive 採用了 sql 的查詢語言 hql,因此很容易將 hive 理解為資料庫。其實 從結構上來看,hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將 從多個方面來闡述 hive 和資料庫的差異。資料庫可以用在 online 的應用中,但是 hive 是為資料倉儲而設計的...

第一章 HIve入門之Hive和資料庫比較

由於 hive 採用了類似sql 的查詢語言 hql hive query language 因此很容易將 hive 理解為資料庫。其實從結構上來看,hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 hive 和資料庫的差異。資料庫可以用在 online 的應用中,但是...