[ 
https://issues.apache.org/jira/browse/HIVE-19501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16472944#comment-16472944
 ] 

Gopal V commented on HIVE-19501:
--------------------------------

FYI, the murmur64 for Long is actually pretty trivial.

{code}
  public static long hash64(long data) {
    long hash = DEFAULT_SEED;
    long k = Long.reverseBytes(data);
    int length = Long.BYTES;
    // mix functions
    k *= C1;
    k = Long.rotateLeft(k, R1);
    k *= C2;
    hash ^= k;
    hash = Long.rotateLeft(hash, R2) * M + N1;
    // finalization
    hash ^= length;
    hash = fmix64(hash);

    return hash;
  }
{code}

and does not need a byte[] array.

> Fix HyperLogLog to be threadsafe
> --------------------------------
>
>                 Key: HIVE-19501
>                 URL: https://issues.apache.org/jira/browse/HIVE-19501
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Zoltan Haindrich
>            Priority: Major
>
> not sure if this is an issue in reality or not; but there are 3 static fields 
> in HyperLogLog which are rewritten during working; if there are multiple 
> threads are calculating HLL in the same JVM, there is a theoretical chance 
> that they might overwrite eachothers value...
> static fields:
> https://github.com/apache/hive/blob/8028ce8a4cf5a03e2998c33e032a511fae770b47/standalone-metastore/src/main/java/org/apache/hadoop/hive/common/ndv/hll/HyperLogLog.java#L65
> usage:
> https://github.com/apache/hive/blob/8028ce8a4cf5a03e2998c33e032a511fae770b47/standalone-metastore/src/main/java/org/apache/hadoop/hive/common/ndv/hll/HyperLogLog.java#L216



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to