You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2012/02/28 08:14:34 UTC

svn commit: r1294492 - in /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql: Driver.java QueryPlan.java log/PerfLogger.java

Author: namit
Date: Tue Feb 28 07:14:33 2012
New Revision: 1294492

URL: http://svn.apache.org/viewvc?rev=1294492&view=rev
Log:
HIVE-2823 Add logging of total run time in Driver
(Kevin Wilfong via namit)


Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java?rev=1294492&r1=1294491&r2=1294492&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java Tue Feb 28 07:14:33 2012
@@ -442,7 +442,7 @@ public class Driver implements CommandPr
       // validate the plan
       sem.validate();
 
-      plan = new QueryPlan(command, sem);
+      plan = new QueryPlan(command, sem, perfLogger.getStartTime(PerfLogger.DRIVER_RUN));
       // initialize FetchTask right here
       if (plan.getFetchTask() != null) {
         plan.getFetchTask().initialize(conf, plan, null);
@@ -886,7 +886,8 @@ public class Driver implements CommandPr
     errorMessage = null;
     SQLState = null;
     // Reset the perf logger
-    PerfLogger.getPerfLogger(true);
+    PerfLogger perfLogger = PerfLogger.getPerfLogger(true);
+    perfLogger.PerfLogBegin(LOG, PerfLogger.DRIVER_RUN);
 
     int ret = compile(command);
     if (ret != 0) {
@@ -939,7 +940,9 @@ public class Driver implements CommandPr
 
     //if needRequireLock is false, the release here will do nothing because there is no lock
     releaseLocks(ctx.getHiveLocks());
-    PerfLogger.getPerfLogger().close(LOG, plan);
+
+    perfLogger.PerfLogEnd(LOG, PerfLogger.DRIVER_RUN);
+    perfLogger.close(LOG, plan);
     return new CommandProcessorResponse(ret);
   }
 

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java?rev=1294492&r1=1294491&r2=1294492&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java Tue Feb 28 07:14:33 2012
@@ -90,10 +90,12 @@ public class QueryPlan implements Serial
 
   private QueryProperties queryProperties;
 
+  private transient Long queryStartTime;
+
   public QueryPlan() {
   }
 
-  public QueryPlan(String queryString, BaseSemanticAnalyzer sem) {
+  public QueryPlan(String queryString, BaseSemanticAnalyzer sem, Long startTime) {
     this.queryString = queryString;
 
     rootTasks = new ArrayList<Task<? extends Serializable>>();
@@ -113,6 +115,7 @@ public class QueryPlan implements Serial
     done = new HashSet<String>();
     started = new HashSet<String>();
     queryProperties = sem.getQueryProperties();
+    queryStartTime = startTime;
   }
 
   public String getQueryStr() {
@@ -744,4 +747,12 @@ public class QueryPlan implements Serial
   public QueryProperties getQueryProperties() {
     return queryProperties;
   }
+
+  public Long getQueryStartTime() {
+    return queryStartTime;
+  }
+
+  public void setQueryStartTime(Long queryStartTime) {
+    this.queryStartTime = queryStartTime;
+  }
 }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java?rev=1294492&r1=1294491&r2=1294492&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java Tue Feb 28 07:14:33 2012
@@ -45,10 +45,12 @@ public class PerfLogger {
   public static final String PRE_HOOK = "PreHook.";
   public static final String POST_HOOK = "PostHook.";
   public static final String FAILURE_HOOK = "FailureHook.";
+  public static final String DRIVER_RUN = "Driver.run";
 
   protected static final ThreadLocal<PerfLogger> perfLogger = new ThreadLocal<PerfLogger>();
 
-  protected final Map<String, Long> perfKeyMaps = new HashMap<String, Long>();
+  protected final Map<String, Long> startTimes = new HashMap<String, Long>();
+  protected final Map<String, Long> endTimes = new HashMap<String, Long>();
 
   static final private Log LOG = LogFactory.getLog(PerfLogger.class.getName());
 
@@ -95,7 +97,7 @@ public class PerfLogger {
   public void PerfLogBegin(Log _log, String method) {
     long startTime = System.currentTimeMillis();
     _log.info("<PERFLOG method=" + method + ">");
-    perfKeyMaps.put(method, new Long(startTime));
+    startTimes.put(method, new Long(startTime));
   }
 
   /**
@@ -105,9 +107,12 @@ public class PerfLogger {
    * @return long duration  the difference between now and startTime, or -1 if startTime is null
    */
   public long PerfLogEnd(Log _log, String method) {
-    Long startTime = perfKeyMaps.get(method);
+    Long startTime = startTimes.get(method);
     long endTime = System.currentTimeMillis();
     long duration = -1;
+
+    endTimes.put(method, new Long(endTime));
+
     StringBuilder sb = new StringBuilder("</PERFLOG method=").append(method);
     if (startTime != null) {
       sb.append(" start=").append(startTime);
@@ -131,4 +136,12 @@ public class PerfLogger {
   public void close(Log _log, QueryPlan queryPlan) {
 
   }
+
+  public Long getStartTime(String method) {
+    return startTimes.get(method);
+  }
+
+  public Long getEndTime(String method) {
+    return endTimes.get(method);
+  }
 }