【问题标题】:What hashing algorithm does Hive use for partitioning?Hive 使用什么散列算法进行分区?
【发布时间】:2020-06-03 21:47:36
【问题描述】:

我需要了解 Hive 用来散列分区数据的算法。例如,Spark 使用 Murmur Hashing。有什么想法或资源吗?

【问题讨论】:

    标签: hash hive partitioning hive-partitions


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2013-10-08
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多