我需要了解Hive用于哈希分区数据的算法。例如,Spark使用Murmur Hashing。有任何想法或资源吗?
Hive中的分区是文件夹,每个分区键值一个文件夹,不散列(可以是复合键)。 Hive不支持其他分区类型,例如哈希或范围。
但是您可以在SQL中计算哈希值,并在写入数据时使用动态分区。
这样,使用反射可以调用静态Java方法:
insert into table partition(mycolumn)
SELECT ...
reflect('org.apache.commons.codec.digest.DigestUtils', 'sha256Hex', mycolumn)
FROM mytable;
还配置单元具有int hash(a1[, a2...])
,sha2(string/binary, int)
和mask_hash(string|char|varchar)
本机功能。
Hive正在使用散列进行存储。桶是文件。参见this question about hashing in buckets。