Hive中的分桶是什麼?


分桶是Hive中用於組織資料的一種方法。它是一種將資料分成稱為桶的範圍的概念。當分割槽變得困難時,Hive中的分桶很有幫助。使用者可以透過雜湊值確定特定桶的範圍。

分割槽表可以進行分桶以進一步分離資料,從而更有效地執行查詢。每個桶都作為表或分割槽目錄中HDFS上的一個檔案儲存。具有相似列值的記錄始終儲存在同一個桶中。可以在分割槽表之上建立分桶,然後將表分割以提高查詢效能。

分桶的優勢

以下是分桶的優勢:

  • 與非分桶表相比,分桶表提供組織良好的取樣。

  • 與非分桶表相比,分桶表中的Map端連線更快。

  • 分桶表提供更高效的查詢響應。

  • 分桶靈活,可以將每個桶中的記錄組織成一個或多個列。

注意 - 分桶不負責正確填充表。因此,終端使用者必須自行將資料載入到桶中。

分桶的特性

以下是分桶的主要特性:

  • 分桶基於分桶列中的雜湊函式的概念。

  • hash_function基於分桶表的種類。但是,系統將永久儲存具有相似分桶列的資料在同一個桶中。

  • 使用CLUSTERED BY子句將表分成桶。

  • 每個桶在表目錄中包含單個檔案。

  • Hive中的分桶可以與分割槽一起使用,也可以不與分割槽一起使用。

  • 由分桶表組成的檔案幾乎均勻分佈。

Hive分割槽和Hive分桶的區別

分割槽和分桶非常相似。它們都在儲存資料之前對資料進行分離。它們之間有一些顯著區別。分割槽可能包含多個目錄。因此,它適用於低容量資料。分桶在每個分割槽中包含等量的資料,從而使Map端連線更快。

表可能同時具有分割槽和分桶資訊。在這種情況下,每個分割槽內的檔案都包含一個分桶檔案。

結論

本文中我們討論的所有內容都表明,Hive中的分桶對於大型資料集連線非常有用,如果沒有高階計算機資源能力,這些連線將是不可能的。

對於具有過濾器的分桶列的查詢,Hive中的分桶效率更高。總的來說,使用分桶表可以更有效地利用資源。更多的桶需要更少的記憶體。但請記住,過多的桶會導致不必要的並行性。

更新於:2022年8月25日

4K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.