You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/10/23 19:00:07 UTC
svn commit: r1535072 - in
/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore:
HiveMetaStore.java Warehouse.java
Author: hashutosh
Date: Wed Oct 23 17:00:07 2013
New Revision: 1535072
URL: http://svn.apache.org/r1535072
Log:
HIVE-5220 : Add option for removing intermediate directory for partition, which is empty (Navis via Ashutosh Chauhan)
Modified:
hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/Warehouse.java
Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java?rev=1535072&r1=1535071&r2=1535072&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java Wed Oct 23 17:00:07 2013
@@ -1993,6 +1993,7 @@ public class HiveMetaStore extends Thrif
} else {
assert (partPath != null);
wh.deleteDir(partPath, true);
+ deleteParentRecursive(partPath.getParent(), part_vals.size() - 1);
}
// ok even if the data is not deleted
}
@@ -2007,6 +2008,13 @@ public class HiveMetaStore extends Thrif
return true;
}
+ private void deleteParentRecursive(Path parent, int depth) throws IOException, MetaException {
+ if (depth > 0 && parent != null && wh.isWritable(parent) && wh.isEmpty(parent)) {
+ wh.deleteDir(parent, true);
+ deleteParentRecursive(parent.getParent(), depth - 1);
+ }
+ }
+
@Override
public boolean drop_partition(final String db_name, final String tbl_name,
final List<String> part_vals, final boolean deleteData)
Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/Warehouse.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/Warehouse.java?rev=1535072&r1=1535071&r2=1535072&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/Warehouse.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/Warehouse.java Wed Oct 23 17:00:07 2013
@@ -39,6 +39,7 @@ import org.apache.commons.lang.StringUti
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.ContentSummary;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@@ -222,6 +223,14 @@ public class Warehouse {
return fsHandler.deleteDir(fs, f, recursive, conf);
}
+ public boolean isEmpty(Path path) throws IOException, MetaException {
+ ContentSummary contents = getFs(path).getContentSummary(path);
+ if (contents != null && contents.getFileCount() == 0 && contents.getDirectoryCount() == 1) {
+ return true;
+ }
+ return false;
+ }
+
public boolean isWritable(Path path) throws IOException {
if (!storageAuthCheck) {
// no checks for non-secure hadoop installations