Hive 和資料庫的異同

2021-08-31 12:23:21 字數 1726 閱讀 7085

摘要:由於 hive 採用了 sql 的查詢語言 hql,因此很容易將 hive 理解為資料庫。其實

從結構上來看,hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將

從多個方面來闡述 hive 和資料庫的差異。資料庫可以用在 online 的應用中,但是

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

hive 和資料庫的比較

查詢語言

hqlsql

資料儲存位置

hdfs

raw device 或者 local fs

資料格式

使用者定義

系統決定

資料更新

支援不支援索引無

有執行mapredcue

executor

執行延遲高低

可擴充套件性高低

資料規模大小

查詢語言。由於 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 中大多數查詢的執行是通過 hadoop 提供的 mapreduce 來實現的(類似 select * from tbl 的查詢不需要 mapreduce)。而資料庫通常有自己的執行引擎。

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

可擴充套件性。由於 hive 是建立在 hadoop 之上的,因此 hive 的可擴充套件性是和 hadoop 的可擴充套件性是一致的(世界上最大的 hadoop 集群在 yahoo!,2023年的規模在 4000 臺節點左右)。而資料庫由於 acid 語義的嚴格限制,擴充套件行非常有限。目前最先進的並行資料庫 oracle 在理論上的擴充套件能力也只有 100 臺左右。

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

Hive與資料庫的異同

一 hive簡介 hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為mapreduce任務進行執行。其優點是學習成本低,可以通過類sql語句快速實現簡單的mapreduce統計,不必開發專門的mapreduce應...

Hive和資料庫比較

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

Hive和資料庫比較

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