hive git commit: HIVE-11502: Map side aggregation is extremely slow (Yongzhi Chen, reviewed by Chao Sun)
Repository: hive Updated Branches: refs/heads/master f8b02610d -> ab03dc97b 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/master Commit: ab03dc97b53ac6138de1be68fcb2f8b15aef400f Parents: f8b0261 Author: Yongzhi Chen Authored: Wed Aug 19 18:21:54 2015 -0700 Committer: Chao Sun 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
hive git commit: HIVE-11502: Map side aggregation is extremely slow (Yongzhi Chen, reviewed by Chao Sun)
Repository: hive Updated Branches: refs/heads/branch-1 1f6fdc2d8 -> 88378a2e9 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/88378a2e Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/88378a2e Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/88378a2e Branch: refs/heads/branch-1 Commit: 88378a2e9426e915863a30bbc22813172cd4cf08 Parents: 1f6fdc2 Author: Yongzhi Chen Authored: Wed Aug 19 18:22:52 2015 -0700 Committer: Chao Sun Committed: Wed Aug 19 18:22:52 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/88378a2e/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
[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 Authored: Wed Aug 19 18:21:54 2015 -0700 Committer: Chao Sun 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