You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/01/12 04:09:34 UTC
[02/50] [abbrv] kylin git commit: KYLIN-2358 CuboidReducer has too
many if (aggrMask[i]) checks
KYLIN-2358 CuboidReducer has too many if (aggrMask[i]) checks
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/4b5257a1
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/4b5257a1
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/4b5257a1
Branch: refs/heads/master-cdh5.7
Commit: 4b5257a1dc4b1cf90804e5273f27944de30b8fbf
Parents: 9c98574
Author: shaofengshi <sh...@apache.org>
Authored: Thu Jan 5 13:49:08 2017 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Thu Jan 5 13:49:08 2017 +0800
----------------------------------------------------------------------
.../kylin/measure/MeasureAggregators.java | 9 +++----
.../kylin/engine/mr/steps/CuboidReducer.java | 26 ++++++++++++--------
2 files changed, 19 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/4b5257a1/core-metadata/src/main/java/org/apache/kylin/measure/MeasureAggregators.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureAggregators.java b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureAggregators.java
index 2b28302..8951b69 100644
--- a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureAggregators.java
+++ b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureAggregators.java
@@ -77,13 +77,10 @@ public class MeasureAggregators implements Serializable {
}
}
- public void aggregate(Object[] values, boolean[] aggrMask) {
+ public void aggregate(Object[] values, int[] measures) {
assert values.length == descLength;
- assert aggrMask.length == descLength;
-
- for (int i = 0; i < descLength; i++) {
- if (aggrMask[i])
- aggs[i].aggregate(values[i]);
+ for (int i = 0; i < measures.length; i++) {
+ aggs[measures[i]].aggregate(values[measures[i]]);
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/4b5257a1/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/CuboidReducer.java
----------------------------------------------------------------------
diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/CuboidReducer.java b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/CuboidReducer.java
index afd29e3..495be77 100644
--- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/CuboidReducer.java
+++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/CuboidReducer.java
@@ -22,6 +22,7 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
+import com.google.common.collect.Lists;
import org.apache.hadoop.io.Text;
import org.apache.kylin.common.KylinConfig;
import org.apache.kylin.cube.CubeManager;
@@ -51,7 +52,7 @@ public class CuboidReducer extends KylinReducer<Text, Text, Text, Text> {
private MeasureAggregators aggs;
private int cuboidLevel;
- private boolean[] needAggr;
+ private int[] needAggrMeasures;
private Object[] input;
private Object[] result;
private int vcounter;
@@ -76,13 +77,22 @@ public class CuboidReducer extends KylinReducer<Text, Text, Text, Text> {
input = new Object[measuresDescs.size()];
result = new Object[measuresDescs.size()];
- needAggr = new boolean[measuresDescs.size()];
- if (cuboidLevel > 0) {
- for (int i = 0; i < measuresDescs.size(); i++) {
- needAggr[i] = !measuresDescs.get(i).getFunction().getMeasureType().onlyAggrInBaseCuboid();
+ List<Integer> needAggMeasuresList = Lists.newArrayList();
+ for (int i = 0; i < measuresDescs.size(); i++) {
+ if (cuboidLevel == 0) {
+ needAggMeasuresList.add(i);
+ } else {
+ if (!measuresDescs.get(i).getFunction().getMeasureType().onlyAggrInBaseCuboid()) {
+ needAggMeasuresList.add(i);
+ }
}
}
+
+ needAggrMeasures = new int[needAggMeasuresList.size()];
+ for (int i = 0; i < needAggMeasuresList.size(); i++) {
+ needAggrMeasures[i] = needAggMeasuresList.get(i);
+ }
}
@Override
@@ -94,11 +104,7 @@ public class CuboidReducer extends KylinReducer<Text, Text, Text, Text> {
logger.info("Handling value with ordinal (This is not KV number!): " + vcounter);
}
codec.decode(ByteBuffer.wrap(value.getBytes(), 0, value.getLength()), input);
- if (cuboidLevel > 0) {
- aggs.aggregate(input, needAggr);
- } else {
- aggs.aggregate(input);
- }
+ aggs.aggregate(input, needAggrMeasures);
}
aggs.collectStates(result);