diff --git hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java index 100a504..8978fb3 100644 --- hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java +++ hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java @@ -275,6 +275,7 @@ public void run() { String line; while ((line = reader.readLine()) != null) { writer.println(line); + writer.flush(); JobState state = null; try { String percent = TempletonUtils.extractPercentComplete(line); @@ -304,7 +305,6 @@ public void run() { } } } - writer.flush(); if(out != System.err && out != System.out) { //depending on FileSystem implementation flush() may or may not do anything writer.close(); diff --git hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java index a2ee1a0..4003b3e 100644 --- hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java +++ hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java @@ -89,7 +89,7 @@ public static boolean isset(char ch) { public static final Pattern JAR_COMPLETE = Pattern.compile(" map \\d+%\\s+reduce \\d+%$"); public static final Pattern PIG_COMPLETE = Pattern.compile(" \\d+% complete$"); //looking for map = 100%, reduce = 100% - public static final Pattern HIVE_COMPLETE = Pattern.compile(" map = \\d+%,\\s+reduce = \\d+%$"); + public static final Pattern HIVE_COMPLETE = Pattern.compile(" map = \\d+%,\\s+reduce = \\d+%"); /** * Extract the percent complete line from Pig or Jar jobs. @@ -120,7 +120,8 @@ public static String extractPercentComplete(String line) { public static final Pattern JAR_ID = Pattern.compile(" Running job: (\\S+)$"); public static final Pattern PIG_ID = Pattern.compile(" HadoopJobId: (\\S+)$"); - public static final Pattern[] ID_PATTERNS = {JAR_ID, PIG_ID}; + public static final Pattern HIVE_ID = Pattern.compile("jobid=(\\S+)$"); + public static final Pattern[] ID_PATTERNS = {JAR_ID, PIG_ID, HIVE_ID}; /** * Extract the job id from jar jobs. diff --git hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java index 33e9d42..a42a848 100644 --- hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java +++ hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java @@ -88,8 +88,31 @@ public void testExtractPercentComplete() { String fifty = "2011-12-15 18:12:36,333 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 50% complete"; Assert.assertEquals("50% complete", TempletonUtils.extractPercentComplete(fifty)); + + // MapRed jar run + String sixty_six = "13/06/02 20:57:32 INFO mapred.JobClient: map 66% reduce 0%"; + Assert.assertEquals("map 66% reduce 0%", TempletonUtils.extractPercentComplete(sixty_six)); + + // Hive job run + String hundred = "2013-06-02 20:52:57,331 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 13.31 sec"; + Assert.assertEquals("map 100% reduce 100%", TempletonUtils.extractPercentComplete(hundred)); + } + + + @Test + public void testExtractChildJobId() { + Assert.assertNull(TempletonUtils.extractChildJobId("fred")); + + // MapRed jar run + String jar_job = "12/01/02 20:57:11 INFO mapred.JobClient: Running job: job_201201221934_0798"; + Assert.assertEquals("job_201201221934_0798", TempletonUtils.extractChildJobId(jar_job)); + + String hive_job = "Starting Job = job_201305221934_0798, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201201221934_0798"; + Assert.assertEquals("job_201201221934_0798", TempletonUtils.extractChildJobId(hive_job)); + } + @Test public void testEncodeArray() { Assert.assertEquals(null, TempletonUtils.encodeArray((String []) null));