hive使用什么哈希算法进行分区?

hm2xizp9  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(520)

我需要了解hive用来散列分区数据的算法。例如,spark使用杂音散列。有什么想法或资源吗?

ht4b089n

ht4b089n1#

配置单元中的分区是文件夹,每个分区键值对应一个文件夹,而不是散列(可以是复合键)。配置单元不支持其他分区类型,如哈希或范围。
但是您可以在sql中计算hash,并在写入数据时使用动态分区。
这样,使用reflect可以调用静态java方法:

insert into table partition(mycolumn) 
SELECT ... 
      reflect('org.apache.commons.codec.digest.DigestUtils', 'sha256Hex', mycolumn)
 FROM mytable;

Hive也有 int hash(a1[, a2...]) , sha2(string/binary, int) 以及 mask_hash(string|char|varchar) 本机函数。
hive正在使用哈希来进行bucketing。桶是文件。请看这个关于在桶中散列的问题。

相关问题