From f9f45cf55d376f9ff59cc7f4c42fb6d7feb2a49b Mon Sep 17 00:00:00 2001 From: Andrew Bayer Date: Fri, 22 Jul 2011 20:04:34 +0000 Subject: [PATCH] SQOOP-205. Add getJob() to JobBase (Garrett Wu via Aaron Kimball) From: Aaron Kimball git-svn-id: https://svn.apache.org/repos/asf/incubator/sqoop/trunk@1150032 13f79535-47bb-0310-9956-ffa450edef68 --- .../cloudera/sqoop/mapreduce/ExportJobBase.java | 3 +-- .../cloudera/sqoop/mapreduce/ImportJobBase.java | 1 + .../com/cloudera/sqoop/mapreduce/JobBase.java | 15 +++++++++++++++ .../com/cloudera/sqoop/mapreduce/MergeJob.java | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/java/com/cloudera/sqoop/mapreduce/ExportJobBase.java b/src/java/com/cloudera/sqoop/mapreduce/ExportJobBase.java index 088d9ff5..9799e37b 100644 --- a/src/java/com/cloudera/sqoop/mapreduce/ExportJobBase.java +++ b/src/java/com/cloudera/sqoop/mapreduce/ExportJobBase.java @@ -254,7 +254,6 @@ protected boolean runJob(Job job) throws ClassNotFoundException, IOException, return success; } - /** * Run an export job to dump a table from HDFS to a database. If a staging * table is specified and the connection manager supports staging of data, @@ -333,7 +332,7 @@ public void runExport() throws ExportException, IOException { configureMapper(job, tableName, tableClassName); configureNumTasks(job); cacheJars(job, context.getConnManager()); - + setJob(job); boolean success = runJob(job); if (!success) { throw new ExportException("Export job failed!"); diff --git a/src/java/com/cloudera/sqoop/mapreduce/ImportJobBase.java b/src/java/com/cloudera/sqoop/mapreduce/ImportJobBase.java index b78d0e30..beca531b 100644 --- a/src/java/com/cloudera/sqoop/mapreduce/ImportJobBase.java +++ b/src/java/com/cloudera/sqoop/mapreduce/ImportJobBase.java @@ -163,6 +163,7 @@ public void runImport(String tableName, String ormJarFile, String splitByCol, cacheJars(job, getContext().getConnManager()); jobSetup(job); + setJob(job); boolean success = runJob(job); if (!success) { throw new ImportException("Import job failed!"); diff --git a/src/java/com/cloudera/sqoop/mapreduce/JobBase.java b/src/java/com/cloudera/sqoop/mapreduce/JobBase.java index 27eb639e..09cceaab 100644 --- a/src/java/com/cloudera/sqoop/mapreduce/JobBase.java +++ b/src/java/com/cloudera/sqoop/mapreduce/JobBase.java @@ -61,6 +61,8 @@ public class JobBase { protected Class inputFormatClass; protected Class outputFormatClass; + private Job mrJob; + private ClassLoader prevClassLoader = null; public JobBase() { @@ -292,6 +294,19 @@ protected int configureNumTasks(Job job) throws IOException { return numMapTasks; } + /** Set the main job that will be run. */ + protected void setJob(Job job) { + mrJob = job; + } + + /** + * @return the main MapReduce job that is being run, or null if no + * job has started. + */ + public Job getJob() { + return mrJob; + } + /** * Actually run the MapReduce job. */ diff --git a/src/java/com/cloudera/sqoop/mapreduce/MergeJob.java b/src/java/com/cloudera/sqoop/mapreduce/MergeJob.java index 88966043..828eaf99 100644 --- a/src/java/com/cloudera/sqoop/mapreduce/MergeJob.java +++ b/src/java/com/cloudera/sqoop/mapreduce/MergeJob.java @@ -132,6 +132,7 @@ public boolean runMergeJob() throws IOException { // Make sure Sqoop and anything else we need is on the classpath. cacheJars(job, null); + setJob(job); return this.runJob(job); } catch (InterruptedException ie) { throw new IOException(ie);