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)));
}