Hive中的分桶是什麼?
分桶是Hive中用於組織資料的一種方法。它是一種將資料分成稱為桶的範圍的概念。當分割槽變得困難時,Hive中的分桶很有幫助。使用者可以透過雜湊值確定特定桶的範圍。
分割槽表可以進行分桶以進一步分離資料,從而更有效地執行查詢。每個桶都作為表或分割槽目錄中HDFS上的一個檔案儲存。具有相似列值的記錄始終儲存在同一個桶中。可以在分割槽表之上建立分桶,然後將表分割以提高查詢效能。
分桶的優勢
以下是分桶的優勢:
與非分桶表相比,分桶表提供組織良好的取樣。
與非分桶表相比,分桶表中的Map端連線更快。
分桶表提供更高效的查詢響應。
分桶靈活,可以將每個桶中的記錄組織成一個或多個列。
注意 - 分桶不負責正確填充表。因此,終端使用者必須自行將資料載入到桶中。
分桶的特性
以下是分桶的主要特性:
分桶基於分桶列中的雜湊函式的概念。
hash_function基於分桶表的種類。但是,系統將永久儲存具有相似分桶列的資料在同一個桶中。
使用CLUSTERED BY子句將表分成桶。
每個桶在表目錄中包含單個檔案。
Hive中的分桶可以與分割槽一起使用,也可以不與分割槽一起使用。
由分桶表組成的檔案幾乎均勻分佈。
Hive分割槽和Hive分桶的區別
分割槽和分桶非常相似。它們都在儲存資料之前對資料進行分離。它們之間有一些顯著區別。分割槽可能包含多個目錄。因此,它適用於低容量資料。分桶在每個分割槽中包含等量的資料,從而使Map端連線更快。
表可能同時具有分割槽和分桶資訊。在這種情況下,每個分割槽內的檔案都包含一個分桶檔案。
結論
本文中我們討論的所有內容都表明,Hive中的分桶對於大型資料集連線非常有用,如果沒有高階計算機資源能力,這些連線將是不可能的。
對於具有過濾器的分桶列的查詢,Hive中的分桶效率更高。總的來說,使用分桶表可以更有效地利用資源。更多的桶需要更少的記憶體。但請記住,過多的桶會導致不必要的並行性。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP