浏览代码

HADOOP-15850. CopyCommitter#concatFileChunks should check that the blocks per chunk is not 0. Contributed by Ted Yu.

Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
Ted Yu 6 年之前
父节点
当前提交
e2cecb681e

+ 7 - 1
hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/mapred/CopyCommitter.java

@@ -73,6 +73,7 @@ public class CopyCommitter extends FileOutputCommitter {
   private boolean overwrite = false;
   private boolean targetPathExists = true;
   private boolean ignoreFailures = false;
+  private int blocksPerChunk = 0;
 
   /**
    * Create a output committer
@@ -83,6 +84,9 @@ public class CopyCommitter extends FileOutputCommitter {
    */
   public CopyCommitter(Path outputPath, TaskAttemptContext context) throws IOException {
     super(outputPath, context);
+    blocksPerChunk = context.getConfiguration().getInt(
+        DistCpOptionSwitch.BLOCKS_PER_CHUNK.getConfigLabel(), 0);
+    LOG.debug("blocks per chunk {}", blocksPerChunk);
     this.taskAttemptContext = context;
   }
 
@@ -97,7 +101,9 @@ public class CopyCommitter extends FileOutputCommitter {
     ignoreFailures = conf.getBoolean(
         DistCpOptionSwitch.IGNORE_FAILURES.getConfigLabel(), false);
 
-    concatFileChunks(conf);
+    if (blocksPerChunk > 0) {
+      concatFileChunks(conf);
+    }
 
     super.commitJob(jobContext);
 

+ 0 - 4
hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/mapred/TestCopyCommitter.java

@@ -85,10 +85,6 @@ public class TestCopyCommitter {
   @Before
   public void createMetaFolder() throws IOException {
     config.set(DistCpConstants.CONF_LABEL_META_FOLDER, "/meta");
-    // Unset listing file path since the config is shared by
-    // multiple tests, and some test doesn't set it, such as
-    // testNoCommitAction, but the distcp code will check it.
-    config.set(DistCpConstants.CONF_LABEL_LISTING_FILE_PATH, "");
     Path meta = new Path("/meta");
     cluster.getFileSystem().mkdirs(meta);
   }