diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java index 7b18510..0bf6add 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java @@ -755,7 +755,9 @@ private FSPaths getDynOutPaths(List row, String lbDirName) throws HiveEx // check # of dp if (valToPaths.size() > maxPartitions) { // throw fatal error - incrCounter(fatalErrorCntr, 1); + if (counterNameToEnum != null) { + incrCounter(fatalErrorCntr, 1); + } fatalError = true; LOG.error("Fatal error was thrown due to exceeding number of dynamic partitions"); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java index 90e1333..e9e968c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java @@ -1076,7 +1076,7 @@ public void closeOp(boolean abort) throws HiveException { try { // put the hash related stats in statsMap if applicable, so that they // are sent to jt as counters - if (hashAggr) { + if (hashAggr && counterNameToEnum != null) { incrCounter(counterNameHashOut, numRowsHashTbl); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java index daf1894..f885e84 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java @@ -525,12 +525,28 @@ public void process(Object row, int tag) throws HiveException { if (fatalError) { return; } - OperatorHookContext opHookContext = new OperatorHookContext(this, row, tag); - preProcessCounter(); - enterOperatorHooks(opHookContext); - processOp(row, tag); - exitOperatorHooks(opHookContext); - postProcessCounter(); + + if (counterNameToEnum != null) { + inputRows++; + if ((inputRows % 1000) == 0) { + incrCounter(numInputRowsCntr, inputRows); + incrCounter(timeTakenCntr, totalTime); + inputRows = 0; + totalTime = 0; + } + + beginTime = System.currentTimeMillis(); + OperatorHookContext opHookContext = new OperatorHookContext(this, row, tag); + enterOperatorHooks(opHookContext); + processOp(row, tag); + exitOperatorHooks(opHookContext); + totalTime += (System.currentTimeMillis() - beginTime); + } else { + OperatorHookContext opHookContext = new OperatorHookContext(this, row, tag); + enterOperatorHooks(opHookContext); + processOp(row, tag); + exitOperatorHooks(opHookContext); + } } // If a operator wants to do some work at the beginning of a group @@ -606,9 +622,11 @@ public void close(boolean abort) throws HiveException { state = State.CLOSE; LOG.info(id + " finished. closing... "); - incrCounter(numInputRowsCntr, inputRows); - incrCounter(numOutputRowsCntr, outputRows); - incrCounter(timeTakenCntr, totalTime); + if (counterNameToEnum != null) { + incrCounter(numInputRowsCntr, inputRows); + incrCounter(numOutputRowsCntr, outputRows); + incrCounter(timeTakenCntr, totalTime); + } LOG.info(id + " forwarded " + cntr + " rows"); @@ -822,9 +840,11 @@ private long getNextCntr(long cntr) { protected void forward(Object row, ObjectInspector rowInspector) throws HiveException { - if ((++outputRows % 1000) == 0) { - incrCounter(numOutputRowsCntr, outputRows); - outputRows = 0; + if (counterNameToEnum != null) { + if ((++outputRows % 1000) == 0) { + incrCounter(numOutputRowsCntr, outputRows); + outputRows = 0; + } } if (isLogInfoEnabled) { @@ -1158,39 +1178,12 @@ protected static StructObjectInspector initEvaluatorsAndReturnStruct( protected transient Object groupKeyObject; /** - * this is called before operator process to buffer some counters. - */ - private void preProcessCounter() { - inputRows++; - if ((inputRows % 1000) == 0) { - incrCounter(numInputRowsCntr, inputRows); - incrCounter(timeTakenCntr, totalTime); - inputRows = 0; - totalTime = 0; - } - beginTime = System.currentTimeMillis(); - } - - /** - * this is called after operator process to buffer some counters. - */ - private void postProcessCounter() { - if (counterNameToEnum != null) { - totalTime += (System.currentTimeMillis() - beginTime); - } - } - - /** * this is called in operators in map or reduce tasks. * * @param name * @param amount */ protected void incrCounter(String name, long amount) { - if(counterNameToEnum == null) { - return; - } - String counterName = getWrappedCounterName(name); ProgressCounter pc = counterNameToEnum.get(counterName);