小智 6
让我们看一个场景,其中表大小为:2300 MB,HDFS 块大小:128 MB
现在,除以 2300/128=17.96
现在,请记住桶的数量始终是 2 的幂。
所以我们需要找到 n 使得 2^n > 17.96
n=5
所以,我将使用桶数 2^5=32
希望它会对你们中的一些人有所帮助。
来自文档 链接
一般来说,桶数由表达式 hash_function(bucketing_column) mod num_buckets 确定。(那里也有一个“0x7FFFFFFF”,但这并不重要)。hash_function 取决于分桶列的类型。对于 int 来说,很简单,hash_int(i) == i。例如,如果 user_id 是 int,并且有 10 个存储桶,则我们期望所有以 0 结尾的 user_id 位于存储桶 1 中,所有以 1 结尾的 user_id 位于存储桶 2 中,等等。对于其他数据类型,它是有点棘手。特别是,BIGINT 的哈希值与 BIGINT 不同。字符串或复杂数据类型的哈希值将是从值派生的某个数字,但不是任何人类可识别的数字。例如,如果 user_id 是 STRING,则存储桶 1 中的 user_id 可能不会以 0 结尾。通常,基于哈希分布行将使您在存储桶中均匀分布。
| 归档时间: | 
 | 
| 查看次数: | 17105 次 | 
| 最近记录: |