refactor: remove FuzzyKeyGTRecord
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ea244504 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ea244504 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ea244504 Branch: refs/heads/master Commit: ea244504e5fa66ef14923f6665bbdbafcd8c28e2 Parents: 64b5f86 Author: Hongbin Ma <mahong...@apache.org> Authored: Tue Jun 21 14:56:50 2016 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Wed Jun 22 14:00:15 2016 +0800 ---------------------------------------------------------------------- .../kylin/gridtable/FuzzyKeyGTRecord.java | 37 -------------------- .../org/apache/kylin/gridtable/GTScanRange.java | 12 +++---- .../kylin/gridtable/GTScanRangePlanner.java | 18 +++++----- .../apache/kylin/gridtable/GTScanRequest.java | 18 +++------- .../storage/hbase/cube/v2/CubeHBaseRPC.java | 7 ++-- 5 files changed, 22 insertions(+), 70 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/ea244504/core-cube/src/main/java/org/apache/kylin/gridtable/FuzzyKeyGTRecord.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/FuzzyKeyGTRecord.java b/core-cube/src/main/java/org/apache/kylin/gridtable/FuzzyKeyGTRecord.java deleted file mode 100644 index acffb4d..0000000 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/FuzzyKeyGTRecord.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.kylin.gridtable; - -import org.apache.kylin.common.util.ByteArray; -import org.apache.kylin.common.util.ImmutableBitSet; - -public class FuzzyKeyGTRecord extends GTRecord { - final ImmutableBitSet maskForEqualHashComp; - - public FuzzyKeyGTRecord(GTInfo info, ByteArray[] cols, ImmutableBitSet maskForEqualHashComp) { - super(info, cols); - this.maskForEqualHashComp = maskForEqualHashComp; - } - - public FuzzyKeyGTRecord(GTInfo info,ImmutableBitSet maskForEqualHashComp) - { - super(info); - this.maskForEqualHashComp = maskForEqualHashComp; - } -} http://git-wip-us.apache.org/repos/asf/kylin/blob/ea244504/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRange.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRange.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRange.java index 433626e..0cffcd9 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRange.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRange.java @@ -27,25 +27,25 @@ public class GTScanRange { final public GTRecord pkStart; // inclusive, record must not be null, col[pk].array() can be null to mean unbounded final public GTRecord pkEnd; // inclusive, record must not be null, col[pk].array() can be null to mean unbounded - final public List<FuzzyKeyGTRecord> fuzzyKeys; // partial matching primary keys + final public List<GTRecord> fuzzyKeys; // partial matching primary keys public GTScanRange(GTRecord pkStart, GTRecord pkEnd) { this(pkStart, pkEnd, null); } - public GTScanRange(GTRecord pkStart, GTRecord pkEnd, List<FuzzyKeyGTRecord> fuzzyKeys) { + public GTScanRange(GTRecord pkStart, GTRecord pkEnd, List<GTRecord> fuzzyKeys) { GTInfo info = pkStart.info; assert info == pkEnd.info; this.pkStart = pkStart; this.pkEnd = pkEnd; - this.fuzzyKeys = fuzzyKeys == null ? Collections.<FuzzyKeyGTRecord> emptyList() : fuzzyKeys; + this.fuzzyKeys = fuzzyKeys == null ? Collections.<GTRecord> emptyList() : fuzzyKeys; } public GTScanRange replaceGTInfo(final GTInfo gtInfo) { - List<FuzzyKeyGTRecord> newFuzzyKeys = Lists.newArrayList(); - for (FuzzyKeyGTRecord input : fuzzyKeys) { - newFuzzyKeys.add(new FuzzyKeyGTRecord(gtInfo, input.cols, input.maskForEqualHashComp)); + List<GTRecord> newFuzzyKeys = Lists.newArrayList(); + for (GTRecord input : fuzzyKeys) { + newFuzzyKeys.add(new GTRecord(gtInfo, input.cols)); } return new GTScanRange(new GTRecord(gtInfo, pkStart.cols), // new GTRecord(gtInfo, pkEnd.cols), // http://git-wip-us.apache.org/repos/asf/kylin/blob/ea244504/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java index 2d4c2a2..4f641e9 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRangePlanner.java @@ -305,7 +305,7 @@ public class GTScanRangePlanner { GTRecord pkEnd = new GTRecord(gtInfo); Map<Integer, Set<ByteArray>> fuzzyValues = Maps.newHashMap(); - List<FuzzyKeyGTRecord> fuzzyKeys; + List<GTRecord> fuzzyKeys; for (ColumnRange range : andDimRanges) { if (gtPartitionCol != null && range.column.equals(gtPartitionCol)) { @@ -337,8 +337,8 @@ public class GTScanRangePlanner { return new GTScanRange(pkStart, pkEnd, fuzzyKeys); } - private List<FuzzyKeyGTRecord> buildFuzzyKeys(Map<Integer, Set<ByteArray>> fuzzyValueSet) { - ArrayList<FuzzyKeyGTRecord> result = Lists.newArrayList(); + private List<GTRecord> buildFuzzyKeys(Map<Integer, Set<ByteArray>> fuzzyValueSet) { + ArrayList<GTRecord> result = Lists.newArrayList(); if (fuzzyValueSet.isEmpty()) return result; @@ -353,11 +353,11 @@ public class GTScanRangePlanner { for (Map<Integer, ByteArray> fuzzyValue : fuzzyValueCombinations) { - BitSet bitSet = new BitSet(gtInfo.getColumnCount()); - for (Map.Entry<Integer, ByteArray> entry : fuzzyValue.entrySet()) { - bitSet.set(entry.getKey()); - } - FuzzyKeyGTRecord fuzzy = new FuzzyKeyGTRecord(gtInfo, new ImmutableBitSet(bitSet)); +// BitSet bitSet = new BitSet(gtInfo.getColumnCount()); +// for (Map.Entry<Integer, ByteArray> entry : fuzzyValue.entrySet()) { +// bitSet.set(entry.getKey()); +// } + GTRecord fuzzy = new GTRecord(gtInfo); for (Map.Entry<Integer, ByteArray> entry : fuzzyValue.entrySet()) { fuzzy.set(entry.getKey(), entry.getValue()); } @@ -514,7 +514,7 @@ public class GTScanRangePlanner { GTRecord start = first.pkStart; GTRecord end = first.pkEnd; - List<FuzzyKeyGTRecord> newFuzzyKeys = new ArrayList<FuzzyKeyGTRecord>(); + List<GTRecord> newFuzzyKeys = new ArrayList<GTRecord>(); boolean hasNonFuzzyRange = false; for (GTScanRange range : ranges) { http://git-wip-us.apache.org/repos/asf/kylin/blob/ea244504/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java index 66c0e87..55d84e6 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java @@ -261,8 +261,8 @@ public class GTScanRequest { serializeGTRecord(range.pkStart, out); serializeGTRecord(range.pkEnd, out); BytesUtil.writeVInt(range.fuzzyKeys.size(), out); - for (FuzzyKeyGTRecord f : range.fuzzyKeys) { - serializeFuzzyKeyGTRecord(f, out); + for (GTRecord f : range.fuzzyKeys) { + serializeGTRecord(f, out); } } @@ -285,10 +285,10 @@ public class GTScanRequest { for (int rangeIdx = 0; rangeIdx < sRangesCount; rangeIdx++) { GTRecord sPkStart = deserializeGTRecord(in, sInfo); GTRecord sPkEnd = deserializeGTRecord(in, sInfo); - List<FuzzyKeyGTRecord> sFuzzyKeys = Lists.newArrayList(); + List<GTRecord> sFuzzyKeys = Lists.newArrayList(); int sFuzzyKeySize = BytesUtil.readVInt(in); for (int i = 0; i < sFuzzyKeySize; i++) { - sFuzzyKeys.add(deserializeFuzzyKeyGTRecord(in, sInfo)); + sFuzzyKeys.add(deserializeGTRecord(in, sInfo)); } GTScanRange sRange = new GTScanRange(sPkStart, sPkEnd, sFuzzyKeys); sRanges.add(sRange); @@ -322,16 +322,6 @@ public class GTScanRequest { return new GTRecord(sInfo, sCols); } - private void serializeFuzzyKeyGTRecord(FuzzyKeyGTRecord gtRecord, ByteBuffer out) { - serializeGTRecord(gtRecord,out); - ImmutableBitSet.serializer.serialize(gtRecord.maskForEqualHashComp, out); - } - - private FuzzyKeyGTRecord deserializeFuzzyKeyGTRecord(ByteBuffer in, GTInfo sInfo) { - GTRecord temp = deserializeGTRecord(in,sInfo); - ImmutableBitSet sMaskForEqualHashComp = ImmutableBitSet.serializer.deserialize(in); - return new FuzzyKeyGTRecord(temp.info,temp.cols, sMaskForEqualHashComp); - } }; http://git-wip-us.apache.org/repos/asf/kylin/blob/ea244504/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/CubeHBaseRPC.java ---------------------------------------------------------------------- diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/CubeHBaseRPC.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/CubeHBaseRPC.java index 015edc6..af5d4b7 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/CubeHBaseRPC.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/CubeHBaseRPC.java @@ -40,7 +40,6 @@ import org.apache.kylin.cube.kv.RowKeyEncoder; import org.apache.kylin.cube.model.HBaseColumnDesc; import org.apache.kylin.cube.model.HBaseColumnFamilyDesc; import org.apache.kylin.cube.model.HBaseMappingDesc; -import org.apache.kylin.gridtable.FuzzyKeyGTRecord; import org.apache.kylin.gridtable.GTInfo; import org.apache.kylin.gridtable.GTRecord; import org.apache.kylin.gridtable.GTScanRange; @@ -93,7 +92,7 @@ public abstract class CubeHBaseRPC implements IGTStorage { return scan; } - private RawScan preparedHBaseScan(GTRecord pkStart, GTRecord pkEnd, List<FuzzyKeyGTRecord> fuzzyKeys, ImmutableBitSet selectedColBlocks) { + private RawScan preparedHBaseScan(GTRecord pkStart, GTRecord pkEnd, List<GTRecord> fuzzyKeys, ImmutableBitSet selectedColBlocks) { final List<Pair<byte[], byte[]>> selectedColumns = makeHBaseColumns(selectedColBlocks); LazyRowKeyEncoder encoder = new LazyRowKeyEncoder(cubeSeg, cuboid); @@ -137,13 +136,13 @@ public abstract class CubeHBaseRPC implements IGTStorage { * translate GTRecord format fuzzy keys to hbase expected format * @return */ - private List<Pair<byte[], byte[]>> translateFuzzyKeys(List<FuzzyKeyGTRecord> fuzzyKeys) { + private List<Pair<byte[], byte[]>> translateFuzzyKeys(List<GTRecord> fuzzyKeys) { if (fuzzyKeys == null || fuzzyKeys.isEmpty()) { return Collections.emptyList(); } List<Pair<byte[], byte[]>> ret = Lists.newArrayList(); - for (FuzzyKeyGTRecord gtRecordFuzzyKey : fuzzyKeys) { + for (GTRecord gtRecordFuzzyKey : fuzzyKeys) { byte[] hbaseFuzzyKey = fuzzyKeyEncoder.createBuf(); byte[] hbaseFuzzyMask = fuzzyMaskEncoder.createBuf();