KYLIN-4679 clean hive table support hive table prefix
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
index f9dc80c..29b6cc8 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
@@ -35,6 +35,10 @@
 
     static final String CREATE_HQL_TMP_FILE_TEMPLATE = "cat >%s<<EOL\n%sEOL";
 
+    public static ThreadLocal<String> getHiveTablePrefix() {
+        return hiveTablePrefix;
+    }
+
     public enum HiveClientMode {
         CLI, BEELINE
     }
@@ -42,6 +46,7 @@
     private KylinConfig kylinConfig;
     private final Map<String, String> hiveConfProps;
     private final List<String> statements = Lists.newArrayList();
+    private static ThreadLocal<String> hiveTablePrefix = new ThreadLocal<String>();
 
     public HiveCmdBuilder() {
         this("");
diff --git a/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanupJob.java b/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanupJob.java
index d21a579..8552e54 100755
--- a/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanupJob.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/job/StorageCleanupJob.java
@@ -332,7 +332,13 @@
         final String prefix = config.getHiveIntermediateTablePrefix();
         final String uuidPattern = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
 
-        List<String> hiveTableNames = getHiveTables();
+        HiveCmdBuilder.getHiveTablePrefix().set(prefix);
+        List<String> hiveTableNames = null;
+        try {
+            hiveTableNames = getHiveTables();
+        } finally {
+            HiveCmdBuilder.getHiveTablePrefix().remove();
+        }
         Iterable<String> kylinIntermediates = Iterables.filter(hiveTableNames, new Predicate<String>() {
             @Override
             public boolean apply(@Nullable String input) {
diff --git a/source-hive/src/main/java/org/apache/kylin/source/hive/BeelineHiveClient.java b/source-hive/src/main/java/org/apache/kylin/source/hive/BeelineHiveClient.java
index e91552d..fab77a5 100644
--- a/source-hive/src/main/java/org/apache/kylin/source/hive/BeelineHiveClient.java
+++ b/source-hive/src/main/java/org/apache/kylin/source/hive/BeelineHiveClient.java
@@ -37,6 +37,7 @@
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.kylin.common.util.DBUtils;
+import org.apache.kylin.common.util.HiveCmdBuilder;
 import org.apache.kylin.common.util.SourceConfigurationUtil;
 
 import org.apache.kylin.shaded.com.google.common.base.Preconditions;
@@ -121,8 +122,14 @@
     }
 
     public List<String> getHiveTableNames(String database) throws Exception {
+        String hiveTablePrefix = HiveCmdBuilder.getHiveTablePrefix().get();
         List<String> ret = Lists.newArrayList();
-        ResultSet tables = metaData.getTables(null, database, null, null);
+        ResultSet tables = null;
+        if (StringUtils.isNotBlank(hiveTablePrefix)) {
+            tables = metaData.getTables(null, database, null, null);
+        } else {
+            tables = metaData.getTables(null, database, hiveTablePrefix + "*", null);
+        }
         while (tables.next()) {
             ret.add(String.valueOf(tables.getObject(3)));
         }