浏览代码

hive 增加本地线上区分

liweiquan 2 年之前
父节点
当前提交
5166615d5e
共有 2 个文件被更改,包括 10 次插入4 次删除
  1. 2 1
      app/common/hive.py
  2. 8 3
      app/core/datasource/hive.py

+ 2 - 1
app/common/hive.py

@@ -24,4 +24,5 @@ hiveDs = HiveDS(**{'type': 'hive',
                     'keytab': KEYTAB,
                     'krb5config': KRB5CONFIG,
                     'kerberos_service_name': KERBEROS_SERVICE_NAME,
-                    'principal':PRINCIPAL})
+                    'principal':PRINCIPAL,
+                    'path_type': 'local'})

+ 8 - 3
app/core/datasource/hive.py

@@ -12,7 +12,7 @@ class HiveDS(DataSourceBase):
     def __init__(self, host, port,database_name,\
         username=None, password=None,  kerberos=0, \
         keytab=None, krb5config=None, kerberos_service_name=None, \
-        principal=None, type='hive'):
+        principal=None, type='hive', path_type='minio'):
         DataSourceBase.__init__(self, host, port, username, password, database_name, type)
         self.host = host
         self.port = port
@@ -24,6 +24,7 @@ class HiveDS(DataSourceBase):
         self.krb5config = krb5config
         self.kerberos_service_name = kerberos_service_name
         self.principal = principal
+        self.path_type = path_type
 
 
     @property
@@ -45,8 +46,12 @@ class HiveDS(DataSourceBase):
             if self.kerberos == 0:
                 conn = hive.Connection(host=self.host, port=self.port, username=self.username, database=self.database_name)
             else:
-                get_kerberos_to_local(self.keytab)
-                file_name = './assets/kerberos/'+self.keytab.split("/")[-1]
+                file_name = ''
+                if self.path_type == 'minio':
+                    get_kerberos_to_local(self.keytab)
+                    file_name = './assets/kerberos/'+self.keytab.split("/")[-1]
+                else:
+                    file_name = self.keytab
                 os.system(f'kinit -kt {file_name} {self.principal}')
                 conn = hive.Connection(host=self.host, database=self.database_name, port=self.port,  auth="KERBEROS", kerberos_service_name=self.kerberos_service_name)