You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2015/08/25 23:29:01 UTC

[31/50] [abbrv] hive git commit: HIVE-11502: Map side aggregation is extremely slow (Yongzhi Chen, reviewed by Chao Sun)

HIVE-11502: Map side aggregation is extremely slow (Yongzhi Chen, reviewed by Chao Sun)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/ab03dc97
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/ab03dc97
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/ab03dc97

Branch: refs/heads/llap
Commit: ab03dc97b53ac6138de1be68fcb2f8b15aef400f
Parents: f8b0261
Author: Yongzhi Chen <yo...@hotmail.com>
Authored: Wed Aug 19 18:21:54 2015 -0700
Committer: Chao Sun <su...@apache.org>
Committed: Wed Aug 19 18:21:54 2015 -0700

----------------------------------------------------------------------
 .../hadoop/hive/ql/exec/KeyWrapperFactory.java    | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/ab03dc97/ql/src/java/org/apache/hadoop/hive/ql/exec/KeyWrapperFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/KeyWrapperFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/KeyWrapperFactory.java
index bf4ba7f..22bd951 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/KeyWrapperFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/KeyWrapperFactory.java
@@ -21,6 +21,7 @@ package org.apache.hadoop.hive.ql.exec;
 import java.util.Arrays;
 
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.lazy.LazyDouble;
 import org.apache.hadoop.hive.serde2.objectinspector.ListObjectsEqualComparer;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
@@ -103,7 +104,22 @@ public class KeyWrapperFactory {
 
     @Override
     public void setHashKey() {
-      hashcode = Arrays.hashCode(keys);
+      if (keys == null) {
+        hashcode = 0;
+      } else {
+        hashcode = 1;
+        for (Object element : keys) {
+          hashcode = 31 * hashcode;
+          if(element != null) {
+            if(element instanceof LazyDouble) {
+              long v = Double.doubleToLongBits(((LazyDouble)element).getWritableObject().get());
+              hashcode = hashcode + (int) (v ^ (v >>> 32));
+            } else {
+              hashcode = hashcode + element.hashCode();
+            }
+          }
+        }
+      }
     }
 
     @Override