You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Gopal V (JIRA)" <ji...@apache.org> on 2019/03/28 06:00:00 UTC
[jira] [Assigned] (HIVE-21531) Vectorization: all NULL hashcodes
are not computed using Murmur3
[ https://issues.apache.org/jira/browse/HIVE-21531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gopal V reassigned HIVE-21531:
------------------------------
Assignee: Gopal V
> Vectorization: all NULL hashcodes are not computed using Murmur3
> ----------------------------------------------------------------
>
> Key: HIVE-21531
> URL: https://issues.apache.org/jira/browse/HIVE-21531
> Project: Hive
> Issue Type: Bug
> Reporter: Gopal V
> Assignee: Gopal V
> Priority: Major
>
> The comments in Vectorized hash computation call out the MurmurHash implementation (the one using 0x5bd1e995), while the non-vectorized codepath calls out the Murmur3 one (using 0xcc9e2d51).
> The comments here are wrong
> {code}
> /**
> * Batch compute the hash codes for all the serialized keys.
> *
> * NOTE: MAJOR MAJOR ASSUMPTION:
> * We assume that HashCodeUtil.murmurHash produces the same result
> * as MurmurHash.hash with seed = 0 (the method used by ReduceSinkOperator for
> * UNIFORM distribution).
> */
> protected void computeSerializedHashCodes() {
> int offset = 0;
> int keyLength;
> byte[] bytes = output.getData();
> for (int i = 0; i < nonNullKeyCount; i++) {
> keyLength = serializedKeyLengths[i];
> hashCodes[i] = Murmur3.hash32(bytes, offset, keyLength, 0);
> offset += keyLength;
> }
> }
> {code}
> but the wrong comment is followed in the Vector RS operator
> {code}
> System.arraycopy(nullKeyOutput.getData(), 0, nullBytes, 0, nullBytesLength);
> nullKeyHashCode = HashCodeUtil.calculateBytesHashCode(nullBytes, 0, nullBytesLength);
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)