hive簡介 與傳統資料庫的區別 大資料生態

2021-10-24 16:44:25 字數 1998 閱讀 7241

hive是基於hadoop的乙個資料倉儲工具,用來進行資料提取、轉化、載入(etl),這是一種可以儲存、查詢和分析儲存在hadoop中的大規模資料的機制。hive資料倉儲工具能將結構化的資料檔案對映為一張資料庫表,並提供sql查詢功能,能將sql語句轉變成mapreduce任務來執行。hive的優點是學習成本低,可以通過類似sql語句實現快速mapreduce統計,使mapreduce變得更加簡單,而不必開發專門的mapreduce應用程式。hive十分適合對資料倉儲進行統計分析。

hive不適用於實時性要求很高的事務,也不提供實時查詢功能。它最適合應用在基於大量不可變資料的批處理作業。例如,hive 在幾百mb 的資料集上執行查詢一般有分鐘級的時間延遲。

hive

mysql

查詢語言

hqlsql

儲存位置

hdfs

塊裝置/本地檔案系統

資料格式

使用者定義

系統決定

資料更新

可通過外掛程式實現

支援索引無有

執行mapreduce

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的可擴充套件性是一致的。而資料庫由於acid語義的嚴格限制,擴充套件性非常有限。目前最先進的並行資料庫oracle在理論上的擴充套件能力也只有100臺左右。

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

hive 的資料儲存在 hdfs 中,大部分的查詢由 mapreduce 完成

文章參考:

Hive與傳統資料庫對比

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

Hive與傳統資料庫對比

由於hive採用了sql的查詢語言hql,因此很容易將hive理解為資料庫。其實從結構上來看,hive和資料庫除了擁有類似的查詢語言,再無類似之處。資料庫可以用在online的應用中,但是hive是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解hive的特性。hive 傳統資料庫 查詢語言 h...

hive和mysql(傳統資料庫)的區別

一 hive是什麼 簡單來說,hive就是在hadoop上架了一層sql介面,可以將sql翻譯成mapreduce去hadoop上執行,這樣使得資料開發和分析人員很方便的使用sql來完成海量資料統計與分析,二不必使用程式語言開發mapreduce那麼麻煩 二 hive與mysql的區別 1.查詢語言...