2016-09-16 130 views
0

我們能否定義一種方法來確定是否應該採用分區或分區?配置單元中的分區和分區之間的比較

+4

可能的重複[Hive中的分區和分區表之間的區別?](http://stackoverflow.com/questions/19128940/what-is-the-difference-between-partitioning-and-bucketing-一個表功能於蜂房) –

回答

3

通常在配置單元中的分區提供了一種將配置單元表數據分隔成多個文件/目錄的方法。但分區提供了有效的結果時,

  • 有有限數量的分區
  • 相比較同等大小的分區

但這可能無法在所有情況下,當分區我們的表像基於地理位置像一些國家,一些較大的國家將會有大的分區(例如:4-5個國家本身佔總數據的70-80%),小國家的數據將創建小分區(剩下的所有國家可能只貢獻20-30所有數據的百分比)。因此,在這些情況下分區將不理想。
爲了解決分區過度的問題,Hive提供Bucketing概念,這是將表數據集分解爲更易管理的部分的另一種技術。 Bucketing概念基於(bucketed列上的哈希函數)mod(按桶的總數).Hash_function取決於bucketing列的類型。
具有相同分段列的記錄將始終存儲在同一個存儲桶中,並且物理上每個存儲桶只是表目錄中的一個文件,並且存儲桶編號基於1。

桶裝效果很好,當現場有高基數和數據桶之間平均分配。 分區當分區字段的基數爲不太高時效果最好

相關問題