我需要了解hive用来散列分区数据的算法。例如,spark使用杂音散列。有什么想法或资源吗?
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。桶是文件。请看这个关于在桶中散列的问题。
int hash(a1[, a2...])
sha2(string/binary, int)
mask_hash(string|char|varchar)
1条答案
按热度按时间ht4b089n1#
配置单元中的分区是文件夹,每个分区键值对应一个文件夹,而不是散列(可以是复合键)。配置单元不支持其他分区类型,如哈希或范围。
但是您可以在sql中计算hash,并在写入数据时使用动态分区。
这样,使用reflect可以调用静态java方法:
Hive也有
int hash(a1[, a2...])
,sha2(string/binary, int)
以及mask_hash(string|char|varchar)
本机函数。hive正在使用哈希来进行bucketing。桶是文件。请看这个关于在桶中散列的问题。