導航:首頁 > 數據處理 > hive支撐哪些數據類型

hive支撐哪些數據類型

發布時間:2023-02-04 08:38:46

㈠ hive表的類型有哪些

Hive 的表有哪些類型呢,我們簡單可以分為四種,受控表、外部表、分區表、桶表,從嚴格意義上說,應該分為兩種受控表,又叫內部表、外部表,分區表和桶表其實是受控表的不同體現。

1、受控表

所謂受控表,我們也經常叫內部表,和外部表對應起來,就是說表的數據的生命周期收表的控制,當表定義被刪除的時候,表中的數據隨之一並被刪除。創建一張表,其對應在hive中就有了表記錄,在metastore表TBLS中就有表定義,當我們一旦從hive中刪除一張表的定義之後,其表中的數據也就不復存在了,在metastore中的定義也就不存在了。

2、外部表

和受控表相對的,怎麼相對呢,你的內部表的數據的生命周期受表定義的影響不是,外部表的不是這樣的,數據的生命周期, 或者說數據存在與否和表的定義互不約束,表中的數據呢,只是表對hdfs上相應文件的一個引用而已,當刪除表定義的時候,表中的數據依然存在。
3、分區表

假設伺服器集群每天都產生一個日誌數據文件,把數據文件統一存儲到HDFS中。我們如果想查詢某一天的數據的話,hive執行的時候會對所有文件都掃描一遍,判斷是否是指定的日期。可以讓日期作為一個子目錄。當hive查詢的時候,根據日期去判斷子目錄。然後掃描符合條件的子目錄中的數據文件。

4、桶表

桶表是對數據進行哈希取值,然後放到不同文件中存儲。分桶是將數據及分解成更容易管理的若幹部分的另一種技術。如果進行表連接操作,那麼就需要對兩張表的數據進行全掃描。非常耗費時間。可以針對連接欄位進行優化。分桶這種情況下呢,對於相似的表中的數據進行比較的話就非常的方便了,只要對比相應的桶中的數據就可了。

㈡ Hive復雜數據類型:array、map、struct

目前所學的復雜數據類型有三種 array , map , struct 。

用這種數據類型的特點就是集合里的每一個欄位都是一個具體的信息,不會是那種 key 與 values 的關系

load數據如上所示,一共兩個欄位, ruoze 和他們工作的城市

也就是欄位與欄位之間的分割用table array欄位之間的分割用「 , 」。

array_contains 這個函數是array_contains(array欄位,『欄位包含的內容』)

比如以上就是array欄位包含 tianjin 的數據。

以上數據一共有3個欄位,分別為id,name,member。其中member里的內容都是以 key:values 的形式出現的,若是這種形式一般用 map 這種復雜數據類型

struct('a',1,2,3,4) (這個數據類型的特點就是可以包含各種各樣的數據類型。但是 struct 可以是任意數據類型,在寫struct數據類型時,在 <> 中要寫清楚struct欄位中的欄位名稱跟數據類型)

㈢ 程序中的Hive具體是干什麼用的呢

Hive是基於Hadoop平台的數倉工具,具有海量數據存儲、水平可擴展、離線批量處理的優點,解決了傳統關系型數倉不能支持海量數據存儲、水平可擴展性差等問題,但是由於Hive數據存儲和數據處理是依賴於HDFS和MapRece,因此在Hive進行數據離線批量處理時,需將查詢語言先轉換成MR任務,由MR批量處理返回結果,所以Hive沒法滿足數據實時查詢分析的需求。
Hive是由FaceBook研發並開源,當時FaceBook使用Oracle作為數倉,由於數據量越來越大,Oracle數倉性能越來越差,沒法實現海量數據的離線批量分析,因此基於Hadoop研發Hive,並開源給Apacha。
由於Hive不能實現數據實時查詢交互,Hbase可提供實時在線查詢能力,因此Hive和Hbase形成了良性互補。Hbase因為其海量數據存儲、水平擴展、批量數據處理等優點,也得到了廣泛應用。
Pig與HIVE工具類似,都可以用類sql語言對數據進行處理。但是他們應用場景有區別,Pig用於數據倉庫數據的ETL,HIVE用於數倉數據分析
從架構圖當中,可看出Hive並沒有完成數據的存儲和處理,它是由HDFS完成數據存儲,MR完成數據處理,其只是提供了用戶查詢語言的能力。Hive支持類sql語言,這種SQL稱為Hivesql。用戶可用Hivesql語言查詢,其驅動可將Hivesql語言轉換成MR任務,完成數據處理。
【Hive的訪問介面】
CLI:是hive提供的命令行工具
HWI:是Hive的web訪問介面
JDBC/ODBC:是兩種的標準的應用程序編程訪問介面
Thrift Server:提供異構語言,進行遠程RPC調用Hive的能力。
因此Hiv具備豐富的訪問介面能力,幾乎能滿足各種開發應用場景需求。
【Driver】
是HIVE比較核心的驅動模塊,包含編譯器、優化器、執行器,職責為把用戶輸入的Hivesql轉換成MR數據處理任務
【Metastore】
是HIVE的元數據存儲模塊,數據的訪問和查找,必須要先訪問元數據。Hive中的元數據一般使用單獨的關系型資料庫存儲,常用的是Mysql,為了確保高可用,Mysql元資料庫還需主備部署。
架構圖上面Karmasphere、Hue、Qubole也是訪問HIVE的工具,其中Qubole可遠程訪問HIVE,相當於HIVE作為一種公有雲服務,用戶可通過互聯網訪問Hive服務。
Hive在使用過程中出現了一些不穩定問題,由此發展出了Hive HA機制,

㈣ Hive入門概述

1.1 什麼是Hive

Hive:由Facebook開源用於解決海量結構化日誌的數據統計。

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張表,並提供類SQL查詢功能。本質是:將HQL轉化成MapRece程序

Hive處理的數據存儲在HDFS

Hive分析數據底層的實現是MapRece

執行程序運行在Yarn上

1.2 Hive的優缺點

1.2.1 優點

操作介面採用類SQL語法,提供快速開發的能力(簡單、容易上手)。

避免了去寫MapRece,減少開發人員的學習成本。

Hive的執行延遲比較高,因此Hive常用於數據分析,對實時性要求不高的場合。

Hive優勢在於處理大數據,對於處理小數據沒有優勢,因為Hive的執行延遲比較高。

Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。

1.2.2 缺點

1.Hive的HQL表達能力有限

(1)迭代式演算法無法表達

(2)數據挖掘方面不擅長

2.Hive的效率比較低

(1)Hive自動生成的MapRece作業,通常情況下不夠智能化

(2)Hive調優比較困難,粒度較粗

1.3 Hive架構原理

1.用戶介面:Client

CLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)

2.元數據:Metastore

元數據包括:表名、表所屬的資料庫(默認是default)、表的擁有者、列/分區欄位、表的類型(是否是外部表)、表的數據所在目錄等;

默認存儲在自帶的derby資料庫中,推薦使用MySQL替代derby存儲Metastore

3.Hadoop

使用HDFS進行存儲,使用MapRece進行計算。

4.驅動器:Driver

(1)解析器(SQL Parser):將SQL字元串轉換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、欄位是否存在、SQL語義是否有誤。

(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計劃。

(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。

(4)執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說,就是MR/Spark。

Hive通過給用戶提供的一系列交互介面,接收到用戶的指令(SQL),使用自己的Driver,結合元數據(MetaStore),將這些指令翻譯成MapRece,提交到Hadoop中執行,最後,將執行返回的結果輸出到用戶交互介面。

1.4 Hive和資料庫比較

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

1.4.1 查詢語言

由於SQL被廣泛的應用在數據倉庫中,因此,專門針對Hive的特性設計了類SQL的查詢語言HQL。熟悉SQL開發的開發者可以很方便的使用Hive進行開發。

1.4.2 數據存儲位置

Hive 是建立在 Hadoop 之上的,所有 Hive 的數據都是存儲在 HDFS 中的。而資料庫則可以將數據保存在塊設備或者本地文件系統中。

1.4.3 數據更新

由於Hive是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。因此,Hive中不建議對數據的改寫,所有的數據都是在載入的時候確定好的。而資料庫中的數據通常是需要經常進行修改的,因此可以使用 INSERT INTO … VALUES 添加數據,使用 UPDATE … SET修改數據。

1.4.4 索引

Hive在載入數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描,因此也沒有對數據中的某些Key建立索引。Hive要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高。由於 MapRece 的引入, Hive 可以並行訪問數據,因此即使沒有索引,對於大數據量的訪問,Hive 仍然可以體現出優勢。資料庫中,通常會針對一個或者幾個列建立索引,因此對於少量的特定條件的數據的訪問,資料庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。

1.4.5 執行

Hive中大多數查詢的執行是通過 Hadoop 提供的 MapRece 來實現的。而資料庫通常有自己的執行引擎。

1.4.6 執行延遲

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

1.4.7 可擴展性

由於Hive是建立在Hadoop之上的,因此Hive的可擴展性是和Hadoop的可擴展性是一致的(世界上最大的Hadoop 集群在 Yahoo!,2009年的規模在4000 台節點左右)。而資料庫由於 ACID 語義的嚴格限制,擴展行非常有限。目前最先進的並行資料庫 Oracle 在理論上的擴展能力也只有100台左右。

1.4.8 數據規模

由於Hive建立在集群上並可以利用MapRece進行並行計算,因此可以支持很大規模的數據;對應的,資料庫可以支持的數據規模較小。

閱讀全文

與hive支撐哪些數據類型相關的資料

熱點內容
qq小程序的游戲如何反饋 瀏覽:757
泡殼包裝產品如何包裝 瀏覽:383
菜市場賣菜的商戶怎麼好招商 瀏覽:36
喜歡消費的女人用什麼產品 瀏覽:527
表格數據變日期了怎麼辦 瀏覽:470
秋眸是什麼產品 瀏覽:547
門面招租怎麼寫信息 瀏覽:885
有人咨詢代理怎麼發朋友圈 瀏覽:915
什麼叫長期交易者 瀏覽:321
混合型皮膚適合什麼牌子的產品 瀏覽:306
程序員屬於霍蘭德里哪個類型 瀏覽:583
所需的五個數據在同一列如何引用 瀏覽:286
微商怎麼做人脈代理 瀏覽:357
怎麼去龍洞華僑職業技術學校 瀏覽:299
你是如何獲取租房信息的 瀏覽:931
代理費多少錢什麼意思 瀏覽:190
安信證券交易界面怎麼顯示 瀏覽:183
東陽賣狗的寵物市場在哪裡 瀏覽:98
不當交易檢察官最後怎麼樣了 瀏覽:965
xbox怎麼交易 瀏覽:296