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