diff --git ql/src/java/org/apache/hadoop/hive/ql/Driver.java ql/src/java/org/apache/hadoop/hive/ql/Driver.java index 318e21a..599fbbe 100644 --- ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -355,6 +355,10 @@ public int compile(String command, boolean resetTaskIds) { } saveSession(queryState); + // generate new query id + String queryId = QueryPlan.makeQueryId(); + conf.setVar(HiveConf.ConfVars.HIVEQUERYID, queryId); + try { command = new VariableSubstitution().substitute(conf,command); ctx = new Context(conf); @@ -397,12 +401,9 @@ public int compile(String command, boolean resetTaskIds) { sem.validate(); perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.ANALYZE); - plan = new QueryPlan(command, sem, perfLogger.getStartTime(PerfLogger.DRIVER_RUN)); + plan = new QueryPlan(command, sem, perfLogger.getStartTime(PerfLogger.DRIVER_RUN), queryId); - String queryId = plan.getQueryId(); String queryStr = plan.getQueryStr(); - - conf.setVar(HiveConf.ConfVars.HIVEQUERYID, queryId); conf.setVar(HiveConf.ConfVars.HIVEQUERYSTRING, queryStr); conf.set("mapreduce.workflow.id", "hive_" + queryId); @@ -1179,7 +1180,7 @@ public int execute() throws CommandNeedRetryException { } } - + console.printInfo("Query ID = " + plan.getQueryId()); int jobs = Utilities.getMRTasks(plan.getRootTasks()).size() + Utilities.getTezTasks(plan.getRootTasks()).size(); if (jobs > 0) { diff --git ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java index 6b31824..1e47413 100644 --- ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java +++ ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java @@ -109,6 +109,10 @@ public QueryPlan() { } public QueryPlan(String queryString, BaseSemanticAnalyzer sem, Long startTime) { + this(queryString, sem, startTime, null); + } + + public QueryPlan(String queryString, BaseSemanticAnalyzer sem, Long startTime, String queryId) { this.queryString = queryString; rootTasks = new ArrayList>(); @@ -123,9 +127,9 @@ public QueryPlan(String queryString, BaseSemanticAnalyzer sem, Long startTime) { columnAccessInfo = sem.getColumnAccessInfo(); idToTableNameMap = new HashMap(sem.getIdToTableNameMap()); - queryId = makeQueryId(); + this.queryId = queryId == null ? makeQueryId() : queryId; query = new org.apache.hadoop.hive.ql.plan.api.Query(); - query.setQueryId(queryId); + query.setQueryId(this.queryId); query.putToQueryAttributes("queryString", this.queryString); queryProperties = sem.getQueryProperties(); queryStartTime = startTime; @@ -139,7 +143,7 @@ public String getQueryId() { return queryId; } - private String makeQueryId() { + public static String makeQueryId() { GregorianCalendar gc = new GregorianCalendar(); String userid = System.getProperty("user.name");