You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2020/05/12 06:33:03 UTC

[kylin] 02/02: Fix for KYLIN-4206

This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch 3.0.x
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 918b8a149df23d2339881b45e335735677599aee
Author: XiaoxiangYu <hi...@126.com>
AuthorDate: Mon Jan 13 10:42:10 2020 +0800

    Fix for KYLIN-4206
---
 .../kylin/source/hive/HiveMetaStoreClientFactory.java | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMetaStoreClientFactory.java b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMetaStoreClientFactory.java
index 984623f..ceadacd 100644
--- a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMetaStoreClientFactory.java
+++ b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMetaStoreClientFactory.java
@@ -22,10 +22,10 @@ import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
 import org.apache.hadoop.hive.metastore.IMetaStoreClient;
 import org.apache.hadoop.hive.metastore.api.MetaException;
-import org.apache.hive.hcatalog.common.HCatUtil;
 import org.apache.kylin.common.KylinConfig;
 
 import java.io.IOException;
+import java.lang.reflect.Method;
 
 public class HiveMetaStoreClientFactory {
 
@@ -42,12 +42,21 @@ public class HiveMetaStoreClientFactory {
      */
     public static IMetaStoreClient getHiveMetaStoreClient(HiveConf hiveConf) throws MetaException, IOException {
         IMetaStoreClient metaStoreClient = null;
-        if ("hcatalog".equals(KylinConfig.getInstanceFromEnv().getHiveMetaDataType())) {
+        String hiveMetadataOption = KylinConfig.getInstanceFromEnv().getHiveMetaDataType();
+        if ("hcatalog".equals(hiveMetadataOption)) {
             metaStoreClient = new HiveMetaStoreClient(hiveConf);
-        } else if ("gluecatalog".equals(KylinConfig.getInstanceFromEnv().getHiveMetaDataType())) {
-            metaStoreClient = HCatUtil.getHiveMetastoreClient(hiveConf);
+        } else if ("gluecatalog".equals(hiveMetadataOption)) {
+            // getHiveMetastoreClient is not available in CDH profile
+            try {
+                Class<?> clazz = Class.forName("org.apache.hive.hcatalog.common.HCatUtil");
+                Method getHiveMetastoreClientMethod = clazz.getDeclaredMethod("getHiveMetastoreClient");
+                metaStoreClient = (IMetaStoreClient) getHiveMetastoreClientMethod.invoke(null, hiveConf);
+            } catch (Exception exp) {
+                throw new IllegalStateException("Unable to create MetaStoreClient for " + hiveMetadataOption, exp);
+            }
+        } else {
+            throw new IllegalArgumentException(hiveMetadataOption + " is not a good option.");
         }
         return metaStoreClient;
     }
-
 }