Hive 談談你對Hive的認識

2022-05-25 00:48:09 字數 1757 閱讀 4523

結合其他同學和自己的筆記總結如下  

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

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修改資料。

5.索引

6.執行

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

7.執行延遲

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

8.可擴充套件性

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

9.資料規模

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

以下擴充套件慎用:

檢視資料庫資訊

desc database extended 資料庫名;
刪除資料庫

drop database if exists 庫名;
強制刪除資料庫

drop database if exists 庫名 cascode;

初學HIVE(一) 初步認識HIVE

hive是基於hadoop的資料倉儲工具,可以將結構化的資料檔案對映為一張表,並提供類sql查詢功能。本質是將hql轉化成mapreduce程式,儲存的基礎資料在hdfs上,執行程式執行在yarn上。hive 在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。還有乙個原因是mapredu...

hive的初認識

hive的初認識 u起源自facebook由jeffhammerbacher領導的團隊 u構建在hadoop上的資料倉儲框架 uhive是構建在hadoop之上的資料倉儲平台 uhive是乙個sql解析引擎,它將sql語句轉譯成mapreduce作業並在hadoop上執行。hive表是hdfs的乙個...

hive的初步認識與hive的本質

hive是什麼?就從這兒開始學習。hive是建立在hadoop hdfs上的資料倉儲基礎架構。hive可以用來資料抽取轉換載入 etl hive定義了簡單的類sql查詢語句,稱為hql。hive是sql解析引擎,它將sql語句轉移成m r job,然後在hadoop上執行。hive的表其實就是hdf...