Updated Branches: refs/heads/sqoop2 0a0a65a29 -> 75ae6e3ea
SQOOP-986: Sqoop2: Add detection of local mode to mapreduce submission engine (Jarek Jarcec Cecho via Kate Ting) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/75ae6e3e Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/75ae6e3e Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/75ae6e3e Branch: refs/heads/sqoop2 Commit: 75ae6e3ea0931f7f677d3e0bfd5109c8fe85c369 Parents: 0a0a65a Author: Kate Ting <[email protected]> Authored: Sun Apr 14 19:08:34 2013 -0400 Committer: Kate Ting <[email protected]> Committed: Sun Apr 14 19:08:34 2013 -0400 ---------------------------------------------------------------------- .../mapreduce/MapreduceSubmissionEngine.java | 22 ++++++++++++++- 1 files changed, 21 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/75ae6e3e/submission/mapreduce/src/main/java/org/apache/sqoop/submission/mapreduce/MapreduceSubmissionEngine.java ---------------------------------------------------------------------- diff --git a/submission/mapreduce/src/main/java/org/apache/sqoop/submission/mapreduce/MapreduceSubmissionEngine.java b/submission/mapreduce/src/main/java/org/apache/sqoop/submission/mapreduce/MapreduceSubmissionEngine.java index 001fb02..dd7b9e7 100644 --- a/submission/mapreduce/src/main/java/org/apache/sqoop/submission/mapreduce/MapreduceSubmissionEngine.java +++ b/submission/mapreduce/src/main/java/org/apache/sqoop/submission/mapreduce/MapreduceSubmissionEngine.java @@ -114,6 +114,10 @@ public class MapreduceSubmissionEngine extends SubmissionEngine { } catch (IOException e) { throw new SqoopException(MapreduceSubmissionError.MAPREDUCE_0002, e); } + + if(isLocal()) { + LOG.info("Detected MapReduce local mode, some methods might not work correctly."); + } } /** @@ -249,7 +253,14 @@ public class MapreduceSubmissionEngine extends SubmissionEngine { job.setOutputKeyClass(request.getOutputKeyClass()); job.setOutputValueClass(request.getOutputValueClass()); - job.submit(); + // If we're in local mode than wait on completion. Local job runner do not + // seems to be exposing API to get previously submitted job which makes + // other methods of the submission engine quite useless. + if(isLocal()) { + job.waitForCompletion(true); + } else { + job.submit(); + } String jobId = job.getJobID().toString(); request.getSummary().setExternalId(jobId); @@ -400,4 +411,13 @@ public class MapreduceSubmissionEngine extends SubmissionEngine { return sqoopCounters; } + /** + * Detect MapReduce local mode. + * + * @return True if we're running in local mode + */ + private boolean isLocal() { + return "local".equals(globalConfiguration.get("mapreduce.jobtracker.address")) + || "local".equals(globalConfiguration.get("mapred.job.tracker")); + } }
