我需要了解Hive用于哈希分区数据的算法。例如,Spark使用Murmur Hashing。有任何想法或资源吗?
iCMS 回答:Hive使用哪种哈希算法进行分区?
Hive中的分区是文件夹,每个分区键值一个文件夹,不散列(可以是复合键)。 Hive不支持其他分区类型,例如哈希或范围。
但是您可以在SQL中计算哈希并在写入数据时使用动态分区。
像这样,使用反射可以调用静态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正在使用散列进行存储。桶是文件。参见this question about hashing in buckets。