diff --git ql/src/java/org/apache/hadoop/hive/ql/Context.java ql/src/java/org/apache/hadoop/hive/ql/Context.java index fdcf0522ac..eac5b23448 100644 --- ql/src/java/org/apache/hadoop/hive/ql/Context.java +++ ql/src/java/org/apache/hadoop/hive/ql/Context.java @@ -338,6 +338,17 @@ private Path getStagingDir(Path inputPath, boolean mkdir) { String stagingPathName; if (inputPathName.indexOf(stagingDir) == -1) { stagingPathName = new Path(inputPathName, stagingDir).toString(); + if(stagingPathName.indexOf(inputPathName) != -1 && stagingPathName.length() > inputPathName.length()) { + String newStagingDir = stagingPathName.substring(inputPathName.length()+1); + if(null != newStagingDir && !newStagingDir.isEmpty()) { + newStagingDir="." + newStagingDir; + stagingPathName = new Path(inputPathName, newStagingDir).toString(); + LOG.warn("You have set hive.exec.stagingdir=" + stagingDir + + " under the directory to be trashed." + + " This may destory the intermediate query results. " + + "So Hive will change hive.exec.stagingdir to " + newStagingDir); + } + } } else { stagingPathName = inputPathName.substring(0, inputPathName.indexOf(stagingDir) + stagingDir.length()); }