You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by br...@apache.org on 2014/08/21 02:55:59 UTC

svn commit: r1619273 - /hive/branches/spark/ql/src/java/org/apache/hadoop/hive/ql/stats/CounterStatsAggregator.java

Author: brock
Date: Thu Aug 21 00:55:58 2014
New Revision: 1619273

URL: http://svn.apache.org/r1619273
Log:
HIVE-7819 - CounterStatsAggregator throws a class cast exception

Modified:
    hive/branches/spark/ql/src/java/org/apache/hadoop/hive/ql/stats/CounterStatsAggregator.java

Modified: hive/branches/spark/ql/src/java/org/apache/hadoop/hive/ql/stats/CounterStatsAggregator.java
URL: http://svn.apache.org/viewvc/hive/branches/spark/ql/src/java/org/apache/hadoop/hive/ql/stats/CounterStatsAggregator.java?rev=1619273&r1=1619272&r2=1619273&view=diff
==============================================================================
--- hive/branches/spark/ql/src/java/org/apache/hadoop/hive/ql/stats/CounterStatsAggregator.java (original)
+++ hive/branches/spark/ql/src/java/org/apache/hadoop/hive/ql/stats/CounterStatsAggregator.java Thu Aug 21 00:55:58 2014
@@ -41,14 +41,16 @@ public class CounterStatsAggregator impl
 
   @Override
   public boolean connect(Configuration hconf, Task sourceTask) {
-    try {
-      jc = new JobClient(toJobConf(hconf));
-      RunningJob job = jc.getJob(((MapRedTask)sourceTask).getJobID());
-      if (job != null) {
-        counters = job.getCounters();
+    if (sourceTask instanceof MapRedTask) {
+      try {
+        jc = new JobClient(toJobConf(hconf));
+        RunningJob job = jc.getJob(((MapRedTask)sourceTask).getJobID());
+        if (job != null) {
+          counters = job.getCounters();
+        }
+      } catch (Exception e) {
+        LOG.error("Failed to get Job instance for " + sourceTask.getJobID(),e);
       }
-    } catch (Exception e) {
-      LOG.error("Failed to get Job instance for " + sourceTask.getJobID(),e);
     }
     return counters != null;
   }
@@ -59,9 +61,13 @@ public class CounterStatsAggregator impl
 
   @Override
   public String aggregateStats(String counterGrpName, String statType) {
-    // In case of counters, aggregation is done by JobTracker / MR AM itself
-	// so no need to aggregate, simply return the counter value for requested stat.
-	return String.valueOf(counters.getGroup(counterGrpName).getCounter(statType));
+    long value = 0;
+    if (counters != null) {
+      // In case of counters, aggregation is done by JobTracker / MR AM itself
+      // so no need to aggregate, simply return the counter value for requested stat.
+      value = counters.getGroup(counterGrpName).getCounter(statType);
+    }
+    return String.valueOf(value);
   }
 
   @Override