我们如何确定总数。蜂巢表的桶数

Bis*_*yak 5 hive buckets numbers formula

我对 hadoop 有点陌生。根据我的知识桶是固定的。hive 表中的分区数和 hive 使用 no。减速器的总数与总数相同。创建表时定义的桶数。那么谁能告诉我如何计算总数。蜂巢表中的桶数。有没有计算桶总数的公式?

小智 6

让我们看一个场景,其中表大小为:2300 MB,HDFS 块大小:128 MB

现在,除以 2300/128=17.96

现在,请记住桶的数量始终是 2 的幂。

所以我们需要找到 n 使得 2^n > 17.96

n=5

所以,我将使用桶数 2^5=32

希望它会对你们中的一些人有所帮助。


Ram*_*mzy 1

来自文档 链接

一般来说,桶数由表达式 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 结尾。通常,基于哈希分布行将使您在存储桶中均匀分布。