diff --git a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java --- a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorMR.java @@ -1230,7 +1230,19 @@ private void getWriter(Reporter reporter, ObjectInspector inspector, AcidOutputFormat aof = instantiate(AcidOutputFormat.class, jobConf.get(OUTPUT_FORMAT_CLASS_NAME)); - writer = aof.getRawRecordWriter(new Path(jobConf.get(TMP_LOCATION)), options); + Path rootDir = new Path(jobConf.get(TMP_LOCATION)); + cleanupTmpLocationOnTaskRetry(options, rootDir); + + writer = aof.getRawRecordWriter(rootDir, options); + } + } + + private void cleanupTmpLocationOnTaskRetry(AcidOutputFormat.Options options, Path rootDir) throws IOException { + Path tmpLocation = AcidUtils.createFilename(rootDir, options); + FileSystem fs = tmpLocation.getFileSystem(jobConf); + + if (fs.exists(tmpLocation)) { + fs.delete(tmpLocation, true); } }