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 2015/03/03 11:08:05 UTC
[09/26] incubator-kylin git commit: KYLIN-609 Add Hybrid as a
federation of Cube and Inverted-index realization
KYLIN-609 Add Hybrid as a federation of Cube and Inverted-index realization
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/06e4b203
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/06e4b203
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/06e4b203
Branch: refs/heads/streaming
Commit: 06e4b20386621ca4bdd70513da4156c3022e8c80
Parents: 7f1abe0
Author: Shao Feng, Shi <sh...@ebay.com>
Authored: Sat Feb 28 09:41:13 2015 +0800
Committer: Shao Feng, Shi <sh...@ebay.com>
Committed: Sat Feb 28 09:41:13 2015 +0800
----------------------------------------------------------------------
.../RoutingRules/RealizationPriorityRule.java | 5 ++--
.../kylin/storage/hybrid/HybridInstance.java | 28 +++++++++++---------
.../storage/hybrid/HybridTupleIterator.java | 15 ++++++++---
3 files changed, 30 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/06e4b203/query/src/main/java/org/apache/kylin/query/routing/RoutingRules/RealizationPriorityRule.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/routing/RoutingRules/RealizationPriorityRule.java b/query/src/main/java/org/apache/kylin/query/routing/RoutingRules/RealizationPriorityRule.java
index 6a67140..09a7dce 100644
--- a/query/src/main/java/org/apache/kylin/query/routing/RoutingRules/RealizationPriorityRule.java
+++ b/query/src/main/java/org/apache/kylin/query/routing/RoutingRules/RealizationPriorityRule.java
@@ -33,8 +33,9 @@ public class RealizationPriorityRule extends RoutingRule {
static Map<RealizationType, Integer> priorities = Maps.newHashMap();
static {
- priorities.put(RealizationType.CUBE, 0);
- priorities.put(RealizationType.INVERTED_INDEX, 1);
+ priorities.put(RealizationType.HYBRID, 0);
+ priorities.put(RealizationType.CUBE, 1);
+ priorities.put(RealizationType.INVERTED_INDEX, 2);
}
public static void setPriorities(Map<RealizationType, Integer> priorities) {
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/06e4b203/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java b/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java
index ebba9f5..789ddc0 100644
--- a/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java
+++ b/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridInstance.java
@@ -53,15 +53,11 @@ public class HybridInstance extends RootPersistentEntity implements IRealization
throw new IllegalArgumentException("Didn't find realization '" + realTimeRealization.getType() + "'" + " with name '" + realTimeRealization.getRealization() + "' in '" + name + "'");
}
-
- if (realTimeRealizationInstance.getDateRangeEnd() < historyRealizationInstance.getDateRangeEnd()) {
- throw new IllegalStateException("The real time realization's dateRangeEnd should be greater than history realization's dateRangeEnd.");
- }
}
@Override
public boolean isCapable(SQLDigest digest) {
- return historyRealizationInstance.isCapable(digest) || realTimeRealizationInstance.isCapable(digest);
+ return getHistoryRealizationInstance().isCapable(digest) || getRealTimeRealizationInstance().isCapable(digest);
}
@Override
@@ -78,17 +74,17 @@ public class HybridInstance extends RootPersistentEntity implements IRealization
@Override
public String getFactTable() {
- return null;
+ return getHistoryRealizationInstance().getFactTable();
}
@Override
public List<TblColRef> getAllColumns() {
- return null;
+ return getHistoryRealizationInstance().getAllColumns();
}
@Override
public List<MeasureDesc> getMeasures() {
- return null;
+ return getHistoryRealizationInstance().getMeasures();
}
@Override
@@ -138,28 +134,34 @@ public class HybridInstance extends RootPersistentEntity implements IRealization
}
public IRealization getHistoryRealizationInstance() {
+ if (historyRealizationInstance == null) {
+ this.init();
+ }
return historyRealizationInstance;
}
public IRealization getRealTimeRealizationInstance() {
+ if (realTimeRealizationInstance == null) {
+ this.init();
+ }
return realTimeRealizationInstance;
}
@Override
public long getDateRangeStart() {
- return historyRealizationInstance.getDateRangeStart();
+ return Math.min(getHistoryRealizationInstance().getDateRangeStart(), getRealTimeRealizationInstance().getDateRangeStart());
}
@Override
public long getDateRangeEnd() {
- return realTimeRealizationInstance.getDateRangeEnd();
+ return Math.max(getHistoryRealizationInstance().getDateRangeEnd(), getRealTimeRealizationInstance().getDateRangeEnd());
}
public String getModelName() {
- if(historyRealizationInstance instanceof CubeInstance) {
- return ((CubeInstance)historyRealizationInstance).getDescriptor().getModelName();
+ if (getHistoryRealizationInstance() instanceof CubeInstance) {
+ return ((CubeInstance) historyRealizationInstance).getDescriptor().getModelName();
}
- return ((IIInstance)historyRealizationInstance).getDescriptor().getModelName();
+ return ((IIInstance) historyRealizationInstance).getDescriptor().getModelName();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/06e4b203/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridTupleIterator.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridTupleIterator.java b/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridTupleIterator.java
index daf3057..516bc58 100644
--- a/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridTupleIterator.java
+++ b/storage/src/main/java/org/apache/kylin/storage/hybrid/HybridTupleIterator.java
@@ -19,12 +19,19 @@ public class HybridTupleIterator implements ITupleIterator {
@Override
public boolean hasNext() {
- return iterators[currentIndex].hasNext() || (currentIndex + 1 < iterators.length && iterators[currentIndex + 1].hasNext());
+ if (iterators[currentIndex].hasNext())
+ return true;
+
+ while (!iterators[currentIndex].hasNext() && currentIndex + 1 < iterators.length) {
+ currentIndex++;
+ }
+
+ return iterators[currentIndex].hasNext();
}
@Override
public ITuple next() {
- if (!iterators[currentIndex].hasNext() && currentIndex + 1 < iterators.length) {
+ while (!iterators[currentIndex].hasNext() && currentIndex + 1 < iterators.length) {
currentIndex++;
}
@@ -33,6 +40,8 @@ public class HybridTupleIterator implements ITupleIterator {
@Override
public void close() {
-
+ for (ITupleIterator i : iterators) {
+ i.close();
+ }
}
}