This is an automated email from the ASF dual-hosted git repository. shaofengshi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push: new 0b31a91 KYLIN-3597 Improve code smell 0b31a91 is described below commit 0b31a911302c0754ae6da5745d127dcaa336a467 Author: hit-lacus <hit_la...@126.com> AuthorDate: Tue Dec 11 16:52:14 2018 +0800 KYLIN-3597 Improve code smell --- .../org/apache/kylin/cube/CubeDescManager.java | 26 ++++++------ .../kylin/cube/cli/DictionaryGeneratorCLI.java | 15 ++++--- .../kylin/cube/inmemcubing/DoggedCubeBuilder.java | 21 ++-------- .../kylin/cube/inmemcubing/InMemCubeBuilder.java | 46 +++++++++++----------- .../measure/percentile/PercentileSerializer.java | 1 + .../query/relnode/visitor/TupleFilterVisitor.java | 5 +-- .../org/apache/kylin/query/util/QueryUtil.java | 11 ++++-- .../source/kafka/util/KafkaSampleProducer.java | 11 ++++-- .../kylin/storage/hbase/util/RowCounterCLI.java | 7 ++-- 9 files changed, 69 insertions(+), 74 deletions(-) diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java index 4fb9522..a7459c0 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java @@ -21,6 +21,7 @@ package org.apache.kylin.cube; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import org.apache.commons.lang3.StringUtils; @@ -60,12 +61,15 @@ public class CubeDescManager { private static final Logger logger = LoggerFactory.getLogger(CubeDescManager.class); - public static final Serializer<CubeDesc> CUBE_DESC_SERIALIZER = new JsonSerializer<CubeDesc>(CubeDesc.class); + public static final Serializer<CubeDesc> CUBE_DESC_SERIALIZER = new JsonSerializer<>(CubeDesc.class); public static CubeDescManager getInstance(KylinConfig config) { return config.getManager(CubeDescManager.class); } + static final String BROKEN_CUBE_MSG = "Broken cube desc %s"; + static final String CUBE_SHOULD_NOT_BE_DRAFT_MSG = "CubeDesc '%s' must not be a draft"; + // called by reflection static CubeDescManager newInstance(KylinConfig config) throws IOException { return new CubeDescManager(config); @@ -84,20 +88,20 @@ public class CubeDescManager { private AutoReadWriteLock descMapLock = new AutoReadWriteLock(); private CubeDescManager(KylinConfig cfg) throws IOException { - logger.info("Initializing CubeDescManager with config " + cfg); + logger.info("Initializing CubeDescManager with config {}", cfg); this.config = cfg; - this.cubeDescMap = new CaseInsensitiveStringCache<CubeDesc>(config, "cube_desc"); + this.cubeDescMap = new CaseInsensitiveStringCache<>(config, "cube_desc"); this.crud = new CachedCrudAssist<CubeDesc>(getStore(), ResourceStore.CUBE_DESC_RESOURCE_ROOT, CubeDesc.class, cubeDescMap) { @Override protected CubeDesc initEntityAfterReload(CubeDesc cubeDesc, String resourceName) { if (cubeDesc.isDraft()) - throw new IllegalArgumentException("CubeDesc '" + cubeDesc.getName() + "' must not be a draft"); + throw new IllegalArgumentException(String.format(Locale.ROOT, CUBE_SHOULD_NOT_BE_DRAFT_MSG, cubeDesc.getName())); try { cubeDesc.init(config); } catch (Exception e) { - logger.warn("Broken cube desc " + cubeDesc.resourceName(), e); + logger.warn(String.format(Locale.ROOT, BROKEN_CUBE_MSG, cubeDesc.resourceName()), e); cubeDesc.addError(e.toString()); } return cubeDesc; @@ -175,10 +179,6 @@ public class CubeDescManager { /** * Create a new CubeDesc - * - * @param cubeDesc - * @return - * @throws IOException */ public CubeDesc createCubeDesc(CubeDesc cubeDesc) throws IOException { try (AutoLock lock = descMapLock.lockForWrite()) { @@ -187,7 +187,7 @@ public class CubeDescManager { if (cubeDescMap.containsKey(cubeDesc.getName())) throw new IllegalArgumentException("CubeDesc '" + cubeDesc.getName() + "' already exists"); if (cubeDesc.isDraft()) - throw new IllegalArgumentException("CubeDesc '" + cubeDesc.getName() + "' must not be a draft"); + throw new IllegalArgumentException(String.format(Locale.ROOT, CUBE_SHOULD_NOT_BE_DRAFT_MSG, cubeDesc.getName())); try { cubeDesc.init(config); @@ -219,10 +219,6 @@ public class CubeDescManager { /** * Update CubeDesc with the input. Broadcast the event into cluster - * - * @param desc - * @return - * @throws IOException */ public CubeDesc updateCubeDesc(CubeDesc desc) throws IOException { try (AutoLock lock = descMapLock.lockForWrite()) { @@ -233,7 +229,7 @@ public class CubeDescManager { if (!cubeDescMap.containsKey(name)) throw new IllegalArgumentException("CubeDesc '" + name + "' does not exist."); if (desc.isDraft()) - throw new IllegalArgumentException("CubeDesc '" + desc.getName() + "' must not be a draft"); + throw new IllegalArgumentException(String.format(Locale.ROOT, CUBE_SHOULD_NOT_BE_DRAFT_MSG, desc.getName())); try { desc.init(config); diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java b/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java index 1b5cf63..1bec02a 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java @@ -19,6 +19,7 @@ package org.apache.kylin.cube.cli; import java.io.IOException; +import java.util.Locale; import java.util.Set; import org.apache.hadoop.io.IOUtils; @@ -42,6 +43,8 @@ import com.google.common.collect.Sets; public class DictionaryGeneratorCLI { + private DictionaryGeneratorCLI(){} + private static final Logger logger = LoggerFactory.getLogger(DictionaryGeneratorCLI.class); public static void processSegment(KylinConfig config, String cubeName, String segmentID, String uuid, @@ -58,7 +61,7 @@ public class DictionaryGeneratorCLI { // dictionary for (TblColRef col : cubeSeg.getCubeDesc().getAllColumnsNeedDictionaryBuilt()) { - logger.info("Building dictionary for " + col); + logger.info("Building dictionary for {}", col); IReadableTable inpTable = factTableValueProvider.getDistinctValuesFor(col); Dictionary<String> preBuiltDict = null; @@ -67,10 +70,10 @@ public class DictionaryGeneratorCLI { } if (preBuiltDict != null) { - logger.debug("Dict for '" + col.getName() + "' has already been built, save it"); + logger.debug("Dict for '{}' has already been built, save it", col.getName()); cubeMgr.saveDictionary(cubeSeg, col, inpTable, preBuiltDict); } else { - logger.debug("Dict for '" + col.getName() + "' not pre-built, build it from " + inpTable.toString()); + logger.debug("Dict for '{}' not pre-built, build it from {}", col.getName(), inpTable); cubeMgr.buildDictionary(cubeSeg, col, inpTable); } } @@ -90,14 +93,14 @@ public class DictionaryGeneratorCLI { } for (String tableIdentity : toSnapshot) { - logger.info("Building snapshot of " + tableIdentity); + logger.info("Building snapshot of {}", tableIdentity); cubeMgr.buildSnapshotTable(cubeSeg, tableIdentity, uuid); } CubeInstance updatedCube = cubeMgr.getCube(cubeSeg.getCubeInstance().getName()); cubeSeg = updatedCube.getSegmentById(cubeSeg.getUuid()); for (TableRef lookup : toCheckLookup) { - logger.info("Checking snapshot of " + lookup); + logger.info("Checking snapshot of {}", lookup); try { JoinDesc join = cubeSeg.getModel().getJoinsTree().getJoinByPKSide(lookup); ILookupTable table = cubeMgr.getLookupTable(cubeSeg, join); @@ -105,7 +108,7 @@ public class DictionaryGeneratorCLI { IOUtils.closeStream(table); } } catch (Throwable th) { - throw new RuntimeException("Checking snapshot of " + lookup + " failed.", th); + throw new RuntimeException(String.format(Locale.ROOT, "Checking snapshot of %s failed.", lookup), th); } } } diff --git a/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/DoggedCubeBuilder.java b/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/DoggedCubeBuilder.java index 06e4a5d..8368051 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/DoggedCubeBuilder.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/DoggedCubeBuilder.java @@ -93,7 +93,7 @@ public class DoggedCubeBuilder extends AbstractInMemCubeBuilder { splits.add(last); last.start(); - logger.info("Split #" + splits.size() + " kickoff"); + logger.info("Split #{} kickoff", splits.size()); // Build splits sequentially last.join(); @@ -101,7 +101,7 @@ public class DoggedCubeBuilder extends AbstractInMemCubeBuilder { checkException(splits); } - logger.info("Dogged Cube Build splits complete, took " + (System.currentTimeMillis() - start) + " ms"); + logger.info("Dogged Cube Build splits complete, took {} ms", (System.currentTimeMillis() - start)); merger.mergeAndOutput(splits, output); @@ -116,7 +116,7 @@ public class DoggedCubeBuilder extends AbstractInMemCubeBuilder { } finally { output.close(); closeGirdTables(splits); - logger.info("Dogged Cube Build end, totally took " + (System.currentTimeMillis() - start) + " ms"); + logger.info("Dogged Cube Build end, totally took {} ms", (System.currentTimeMillis() - start)); ensureExit(splits); logger.info("Dogged Cube Build return"); } @@ -173,20 +173,7 @@ public class DoggedCubeBuilder extends AbstractInMemCubeBuilder { if (split.exception != null) errors.add(split.exception); } - - if (errors.isEmpty()) { - return; - } else if (errors.size() == 1) { - Throwable t = errors.get(0); - if (t instanceof IOException) - throw (IOException) t; - else - throw new IOException(t); - } else { - for (Throwable t : errors) - logger.error("Exception during in-mem cube build", t); - throw new IOException(errors.size() + " exceptions during in-mem cube build, cause set to the first, check log for more", errors.get(0)); - } + InMemCubeBuilder.processErrors(errors); } } diff --git a/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilder.java b/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilder.java index ef61ce9..e0bdb20 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilder.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilder.java @@ -111,9 +111,6 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { new CubeDimEncMap(cubeDesc, dictionaryMap) ); - // Below several store implementation are very similar in performance. The ConcurrentDiskStore is the simplest. - // MemDiskStore store = new MemDiskStore(info, memBudget == null ? MemoryBudgetController.ZERO_BUDGET : memBudget); - // MemDiskStore store = new MemDiskStore(info, MemoryBudgetController.ZERO_BUDGET); ConcurrentDiskStore store = new ConcurrentDiskStore(info); GridTable gridTable = new GridTable(info, store); @@ -156,7 +153,7 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { private <T> void build(RecordConsumeBlockingQueueController<T> input, ICuboidCollector collector) throws IOException { long startTime = System.currentTimeMillis(); - logger.info("In Mem Cube Build start, " + cubeDesc.getName()); + logger.info("In Mem Cube Build start, {}", cubeDesc.getName()); baseCuboidMemTracker = new MemoryWaterLevel(); baseCuboidMemTracker.markLow(); @@ -186,7 +183,7 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { join(taskThreads); long endTime = System.currentTimeMillis(); - logger.info("In Mem Cube Build end, " + cubeDesc.getName() + ", takes " + (endTime - startTime) + " ms"); + logger.info("In Mem Cube Build end, {}, takes {} ms", cubeDesc.getName(), (endTime - startTime)); throwExceptionIfAny(); } @@ -216,12 +213,16 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { } private void throwExceptionIfAny() throws IOException { - ArrayList<Throwable> errors = new ArrayList<Throwable>(); + ArrayList<Throwable> errors = new ArrayList<>(); for (int i = 0; i < taskThreadCount; i++) { Throwable t = taskThreadExceptions[i]; if (t != null) errors.add(t); } + processErrors(errors); + } + + static void processErrors(List<Throwable> errors) throws IOException{ if (errors.isEmpty()) { return; } else if (errors.size() == 1) { @@ -313,26 +314,26 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { private void makeMemoryBudget() { baseResult.aggrCacheMB = Math.max(baseCuboidMemTracker.getEstimateMB(), 10); // 10 MB at minimal - logger.debug("Base cuboid aggr cache is " + baseResult.aggrCacheMB + " MB"); + logger.debug("Base cuboid aggr cache is {} MB", baseResult.aggrCacheMB); int systemAvailMB = MemoryBudgetController.gcAndGetSystemAvailMB(); - logger.debug("System avail " + systemAvailMB + " MB"); + logger.debug("System avail {} MB", systemAvailMB); int reserve = reserveMemoryMB; - logger.debug("Reserve " + reserve + " MB for system basics"); + logger.debug("Reserve {} MB for system basics", reserve); int budget = systemAvailMB - reserve; if (budget < baseResult.aggrCacheMB) { // make sure we have base aggr cache as minimal budget = baseResult.aggrCacheMB; - logger.warn("System avail memory (" + systemAvailMB + " MB) is less than base aggr cache (" + baseResult.aggrCacheMB + " MB) + minimal reservation (" + reserve + " MB), consider increase JVM heap -Xmx"); + logger.warn("System avail memory ({} MB) is less than base aggr cache ({} MB) + minimal reservation ({} MB), consider increase JVM heap -Xmx", systemAvailMB, baseResult.aggrCacheMB, reserve); } - logger.debug("Memory Budget is " + budget + " MB"); + logger.debug("Memory Budget is {} MB", budget); memBudget = new MemoryBudgetController(budget); } private <T> CuboidResult createBaseCuboid(RecordConsumeBlockingQueueController<T> input) throws IOException { long startTime = System.currentTimeMillis(); - logger.info("Calculating base cuboid " + baseCuboidId); + logger.info("Calculating base cuboid {}", baseCuboidId); GridTable baseCuboid = newGridTableByCuboidID(baseCuboidId); GTBuilder baseBuilder = baseCuboid.rebuild(); @@ -358,10 +359,10 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { } long timeSpent = System.currentTimeMillis() - startTime; - logger.info("Cuboid " + baseCuboidId + " has " + count + " rows, build takes " + timeSpent + "ms"); + logger.info("Cuboid {} has {} rows, build takes {}ms", baseCuboidId, count, timeSpent); int mbEstimateBaseAggrCache = (int) (aggregationScanner.getEstimateSizeOfAggrCache() / MemoryBudgetController.ONE_MB); - logger.info("Wild estimate of base aggr cache is " + mbEstimateBaseAggrCache + " MB"); + logger.info("Wild estimate of base aggr cache is {} MB", mbEstimateBaseAggrCache); return updateCuboidResult(baseCuboidId, baseCuboid, count, timeSpent, 0, input.inputConverterUnit.ifChange()); } @@ -427,7 +428,7 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { aggrMask[i] = !measureDescs[i].getFunction().getMeasureType().onlyAggrInBaseCuboid(); if (!aggrMask[i]) { - logger.info(measureDescs[i].toString() + " doesn't need aggregation."); + logger.info("{} doesn't need aggregation.", measureDescs[i]); } } scanner.setAggrMask(aggrMask); @@ -438,7 +439,7 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { private CuboidResult scanAndAggregateGridTable(GridTable gridTable, long parentId, long cuboidId, ImmutableBitSet aggregationColumns, ImmutableBitSet measureColumns) throws IOException { long startTime = System.currentTimeMillis(); - logger.info("Calculating cuboid " + cuboidId); + logger.info("Calculating cuboid {}", cuboidId); GTAggregateScanner scanner = prepareGTAggregationScanner(gridTable, parentId, cuboidId, aggregationColumns, measureColumns); GridTable newGridTable = newGridTableByCuboidID(cuboidId); @@ -458,16 +459,13 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { builder.write(newRecord); } - //long t = System.currentTimeMillis(); - //sanityCheck(parentId, cuboidId, scanner.getTotalSumForSanityCheck()); - //logger.info("sanity check for Cuboid " + cuboidId + " cost " + (System.currentTimeMillis() - t) + "ms"); } finally { scanner.close(); builder.close(); } long timeSpent = System.currentTimeMillis() - startTime; - logger.info("Cuboid " + cuboidId + " has " + count + " rows, build takes " + timeSpent + "ms"); + logger.info("Cuboid {} has {} rows, build takes {}ms", cuboidId, count, timeSpent); return updateCuboidResult(cuboidId, newGridTable, count, timeSpent, 0); } @@ -498,9 +496,11 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder { return; } if (Arrays.equals(totalSumForSanityCheck, totalSum) == false) { - logger.info("sanityCheck failed when calculate " + cuboidId + " from parent " + parentId); - logger.info("Expected: " + Arrays.toString(totalSumForSanityCheck)); - logger.info("Actually: " + Arrays.toString(totalSum)); + if(logger.isInfoEnabled()){ + logger.info("sanityCheck failed when calculate{} from parent {}", cuboidId, parentId); + logger.info("Expected: {}", Arrays.toString(totalSumForSanityCheck)); + logger.info("Actually: {}", Arrays.toString(totalSum)); + } throw new IllegalStateException(); } } diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/percentile/PercentileSerializer.java b/core-metadata/src/main/java/org/apache/kylin/measure/percentile/PercentileSerializer.java index 203a975..d0ecba7 100644 --- a/core-metadata/src/main/java/org/apache/kylin/measure/percentile/PercentileSerializer.java +++ b/core-metadata/src/main/java/org/apache/kylin/measure/percentile/PercentileSerializer.java @@ -48,6 +48,7 @@ public class PercentileSerializer extends DataTypeSerializer<PercentileCounter> return current().getBytesEstimate(); } + @Override protected double getStorageBytesEstimate(double count) { return current().getBytesEstimate(count); } diff --git a/query/src/main/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitor.java b/query/src/main/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitor.java index bf52f91..faa9988 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitor.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitor.java @@ -130,10 +130,10 @@ public class TupleFilterVisitor extends RexVisitorImpl<TupleFilter> { // is a trivial expr return f; } - //else go to default - default: filter = new UnsupportedTupleFilter(TupleFilter.FilterOperatorEnum.UNSUPPORTED); break; + default: + filter = new UnsupportedTupleFilter(TupleFilter.FilterOperatorEnum.UNSUPPORTED); } for (RexNode operand : call.operands) { @@ -281,7 +281,6 @@ public class TupleFilterVisitor extends RexVisitorImpl<TupleFilter> { strValue = ((NlsString) literalValue).getValue(); } else if (literalValue instanceof GregorianCalendar) { GregorianCalendar g = (GregorianCalendar) literalValue; - //strValue = "" + g.get(Calendar.YEAR) + "-" + normToTwoDigits(g.get(Calendar.MONTH) + 1) + "-" + normToTwoDigits(g.get(Calendar.DAY_OF_MONTH)); strValue = Long.toString(g.getTimeInMillis()); } else if (literalValue instanceof TimeUnitRange) { // Extract(x from y) in where clause diff --git a/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java b/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java index 5aad5e0..6407308 100644 --- a/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java +++ b/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java @@ -48,6 +48,10 @@ public class QueryUtil { String transform(String sql, String project, String defaultSchema); } + static final String KEYWORD_SELECT = "select"; + static final String KEYWORD_WITH = "with"; + static final String KEYWORD_EXPLAIN = "explain"; + /** * @deprecated Deprecated because of KYLIN-3594 */ @@ -126,7 +130,7 @@ public class QueryUtil { IQueryTransformer t = (IQueryTransformer) ClassUtil.newInstance(clz); transformers.add(t); } catch (Exception e) { - throw new RuntimeException("Failed to init query transformer", e); + throw new IllegalStateException("Failed to init query transformer", e); } } @@ -178,8 +182,9 @@ public class QueryUtil { String sql1 = sql.toLowerCase(Locale.ROOT); sql1 = removeCommentInSql(sql1); sql1 = sql1.trim(); - return sql1.startsWith("select") || (sql1.startsWith("with") && sql1.contains("select")) - || (sql1.startsWith("explain") && sql1.contains("select")); + + return sql1.startsWith(KEYWORD_SELECT) || (sql1.startsWith(KEYWORD_WITH) && sql1.contains(KEYWORD_SELECT)) + || (sql1.startsWith(KEYWORD_EXPLAIN) && sql1.contains(KEYWORD_SELECT)); } public static String removeCommentInSql(String sql1) { diff --git a/source-kafka/src/main/java/org/apache/kylin/source/kafka/util/KafkaSampleProducer.java b/source-kafka/src/main/java/org/apache/kylin/source/kafka/util/KafkaSampleProducer.java index 5899c7c..51e8ff3 100644 --- a/source-kafka/src/main/java/org/apache/kylin/source/kafka/util/KafkaSampleProducer.java +++ b/source-kafka/src/main/java/org/apache/kylin/source/kafka/util/KafkaSampleProducer.java @@ -56,7 +56,7 @@ public class KafkaSampleProducer { private static final ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) throws Exception { - logger.info("args: {}", Arrays.toString(args)); + if(logger.isInfoEnabled()) logger.info("args: {}", Arrays.toString(args)); OptionsHelper optionsHelper = new OptionsHelper(); Options options = new Options(); options.addOption(OPTION_TOPIC); @@ -109,12 +109,12 @@ public class KafkaSampleProducer { props.put("buffer.memory", 33554432); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); - + long startTime = System.currentTimeMillis(); try (Producer<String, String> producer = new KafkaProducer<>(props)) { boolean alive = true; Random rnd = new Random(); Map<String, Object> record = new HashMap<>(); - while (alive == true) { + while (alive) { //add normal record record.put("order_time", (new Date().getTime())); record.put("country", countries.get(rnd.nextInt(countries.size()))); @@ -132,9 +132,12 @@ public class KafkaSampleProducer { record.put("user", user); //send message ProducerRecord<String, String> data = new ProducerRecord<>(topic, System.currentTimeMillis() + "", mapper.writeValueAsString(record)); - System.out.println("Sending 1 message: " + JsonUtil.writeValueAsString(record)); + if(logger.isInfoEnabled()) logger.info("Sending 1 message: {}", JsonUtil.writeValueAsString(record)); producer.send(data); Thread.sleep(interval); + if(System.currentTimeMillis() - startTime <= 7 * 24 * 3600 * 1000){ + alive = false; + } } } } diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java index d6367e5..1a659cb 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java @@ -59,9 +59,10 @@ public class RowCounterCLI { } else { logger.info("startkey lenght: {}", startKey.length); } - - logger.info("start key in binary: {}", Bytes.toStringBinary(startKey)); - logger.info("end key in binary: {}", Bytes.toStringBinary(endKey)); + if(logger.isInfoEnabled()){ + logger.info("start key in binary: {}", Bytes.toStringBinary(startKey)); + logger.info("end key in binary: {}", Bytes.toStringBinary(endKey)); + } Configuration conf = HBaseConnection.getCurrentHBaseConfiguration();