我知道HashMap在Java中的散列原理,所以我想知道当我们在不同的存储桶中存储数据时,散列是如何为Hive工作的。
发布于 2017-10-16 22:39:45
我最近不得不深入研究一些Hive源代码,以便自己弄清楚这一点。这是我发现的:
对于整型字段,为hash is just the integer value。对于字符串,它使用Java's String hashCode的similar version。在对多个值进行散列时,散列是类似于Java’s List hashCode的版本。
发布于 2015-06-03 00:58:44
与分区一起使用分组法是为了具有更多的分解结构,以便将来进行分析。随着更多的分区导致更多的hdfs文件,这可能会影响namenode的性能,我们求助于bucketing。存储桶的实际工作方式是:存储桶的数量由hashFunction(bucketingColumn) mod numOfBuckets numOfBuckets在创建带有分区的表时选择。哈希函数的输出取决于所选列的类型。为了在分词时准确设置reducers的数量,并适当地登陆数据,我们使用"hive.enforce.bucketing = true"。有关更多信息,请参阅this
https://stackoverflow.com/questions/30594038
复制相似问题