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 2016/06/01 09:26:29 UTC

kylin git commit: API for getting offsets of rowkeys and shard id

Repository: kylin
Updated Branches:
  refs/heads/master d6bb49984 -> b312200e7


API for getting offsets of rowkeys and shard id

Signed-off-by: lidongsjtu <li...@apache.org>


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

Branch: refs/heads/master
Commit: b312200e7862bfc44a3574af1b8686715e5dbad8
Parents: d6bb499
Author: Roger Shi <ro...@kyligence.io>
Authored: Wed Jun 1 16:50:36 2016 +0800
Committer: lidongsjtu <li...@apache.org>
Committed: Wed Jun 1 17:25:47 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/cube/common/RowKeySplitter.java    | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b312200e/core-cube/src/main/java/org/apache/kylin/cube/common/RowKeySplitter.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/common/RowKeySplitter.java b/core-cube/src/main/java/org/apache/kylin/cube/common/RowKeySplitter.java
index a8be987..dbed30d 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/common/RowKeySplitter.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/common/RowKeySplitter.java
@@ -34,15 +34,21 @@ public class RowKeySplitter {
     private RowKeyColumnIO colIO;
 
     private SplittedBytes[] splitBuffers;
+    private int[] splitOffsets;
     private int bufferSize;
 
     private long lastSplittedCuboidId;
     private boolean enableSharding;
+    private short shardId;
 
     public SplittedBytes[] getSplitBuffers() {
         return splitBuffers;
     }
 
+    public int[] getSplitOffsets() {
+        return splitOffsets;
+    }
+
     public int getBodySplitOffset() {
         if (enableSharding) {
             return 2;//shard+cuboid
@@ -62,12 +68,20 @@ public class RowKeySplitter {
         this.colIO = new RowKeyColumnIO(new CubeDimEncMap(cubeSeg));
 
         this.splitBuffers = new SplittedBytes[splitLen];
+        this.splitOffsets = new int[splitLen];
         for (int i = 0; i < splitLen; i++) {
             this.splitBuffers[i] = new SplittedBytes(bytesLen);
         }
         this.bufferSize = 0;
     }
 
+    public Short getShardId() {
+        if (enableSharding) {
+            return shardId;
+        }
+        return null;
+    }
+
     /**
      * @param bytes
      * @return cuboid ID
@@ -83,6 +97,7 @@ public class RowKeySplitter {
             System.arraycopy(bytes, offset, shardSplit.value, 0, RowConstants.ROWKEY_SHARDID_LEN);
             offset += RowConstants.ROWKEY_SHARDID_LEN;
             //lastSplittedShard = Bytes.toShort(shardSplit.value, 0, shardSplit.length);
+            shardId = Bytes.toShort(shardSplit.value);
         }
 
         // extract cuboid id
@@ -96,6 +111,7 @@ public class RowKeySplitter {
 
         // rowkey columns
         for (int i = 0; i < cuboid.getColumns().size(); i++) {
+            splitOffsets[i] = offset;
             TblColRef col = cuboid.getColumns().get(i);
             int colLength = colIO.getColumnLength(col);
             SplittedBytes split = this.splitBuffers[this.bufferSize++];