Hive與傳統資料庫對比

2021-09-29 19:16:09 字數 2443 閱讀 7855

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

hive

傳統資料庫

查詢語言

hqlsql

資料儲存

hdfs

raw device或者 local fs

資料格式

使用者自定義

系統決定

資料更新

不支援支援

執行mapreduce

excutor

執行延遲高低

處理資料規模大小

索引0.8版本後加入位圖索引

有複雜的索引

可擴充套件性高低

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具有sql資料庫的外表,但應用場景完全不同,hive只適合用來做批量資料統計分析

hive的資料儲存

1、hive中所有的資料都儲存在 hdfs 中,沒有專門的資料儲存格式(可支援text,sequencefile,parquetfile,orc格式rcfile等)

2、只需要在建立表的時候告訴 hive 資料中的列分隔符和行分隔符,hive 就可以解析資料。

3、hive中包含以下資料模型:db、table,external table,partition,bucket。

db:在hdfs中表現為$目錄下乙個資料夾

table:在hdfs中表現所屬db目錄下乙個資料夾 external

external table:與table類似,不過其資料存放位置可以在任意指定路徑

partition:在hdfs中表現為table目錄下的子目錄

bucket:在hdfs中表現為同乙個表目錄下根據hash雜湊之後的多個檔案

Hive與傳統資料庫對比

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

Hive對比傳統資料庫區別

hive對比傳統資料庫 hive和關聯式資料庫儲存檔案系統不同,hive使用的是hadoop的hdfs hadoop的分布式檔案系統 關聯式資料庫則是伺服器本地的檔案系統 hive使用的計算模型是mapreduce,而關聯式資料庫則是自己設計的計算模型 關聯式資料庫都是為了實時查詢的業務進行設計的,...

hbase簡介 與傳統資料庫對比

什麼是hbase hbase是乙個高可靠性 高效能 面向列 可伸縮的分布式儲存系統,利用hbase技術可在廉價pc server上搭建起大規模結構化儲存集群。hbase的目標是儲存並處理大型的資料,更具體來說是僅需使用普通的硬體配置,就能夠處理由成千上萬的行和列所組成的大型資料。hbase是goog...