Kaynağa Gözat

HUE-8798 [notebook] Integrate Hive Metastore connector

Romain 6 yıl önce
ebeveyn
işleme
e04b71483c

+ 0 - 2
apps/beeswax/src/beeswax/server/dbms.py

@@ -89,7 +89,6 @@ def get_query_server_config(name='beeswax', server=None, cluster=None):
     query_server = impala_query_server_config(cluster_config=cluster_config)
   elif name == 'hms':
     kerberos_principal = hive_site.get_hiveserver2_kerberos_principal(HIVE_SERVER_HOST.get())
-
     query_server = {
         'server_name': 'hms',
         'server_host': HIVE_METASTORE_HOST.get() if not cluster_config else cluster_config.get('server_host'),
@@ -101,7 +100,6 @@ def get_query_server_config(name='beeswax', server=None, cluster=None):
     }
   else:
     kerberos_principal = hive_site.get_hiveserver2_kerberos_principal(HIVE_SERVER_HOST.get())
-
     query_server = {
         'server_name': 'beeswax',
         'server_host': HIVE_SERVER_HOST.get() if not cluster_config else cluster_config.get('server_host'),

+ 5 - 5
desktop/libs/dashboard/src/dashboard/conf.py

@@ -116,11 +116,11 @@ def get_engines(user):
 
   if HAS_SQL_ENABLED.get():
     engines += [{
-          'name': _('Table (%s)') % interpreter['name'],
-          'type': interpreter['type'],
-          'async': interpreter['interface'] == 'hiveserver2',
-          'analytics': settings.get('sql') and settings['sql'].get('analytics'),
-          'nesting': settings.get('sql') and settings['sql'].get('nesting'),
+        'name': _('Table (%s)') % interpreter['name'],
+        'type': interpreter['type'],
+        'async': interpreter['interface'] == 'hiveserver2',
+        'analytics': settings.get('sql') and settings['sql'].get('analytics'),
+        'nesting': settings.get('sql') and settings['sql'].get('nesting'),
       }
       for interpreter in get_ordered_interpreters(user) if interpreter['interface'] in ('hiveserver2', 'jdbc', 'rdbms', 'sqlalchemy')
     ]

+ 0 - 1
desktop/libs/notebook/src/notebook/conf.py

@@ -46,7 +46,6 @@ def check_permissions(user, interpreter, user_apps=None):
          (interpreter in ('java', 'spark2', 'mapreduce', 'shell', 'sqoop1', 'distcp') and 'oozie' not in user_apps)
 
 
-
 def get_ordered_interpreters(user=None):
   from desktop.lib.connectors.api import CONFIGURED_CONNECTORS
   global CONFIGURED_CONNECTORS

+ 6 - 4
desktop/libs/notebook/src/notebook/connectors/base.py

@@ -328,7 +328,6 @@ def get_api(request, snippet):
     }
     snippet['type'] = snippet['type'].split('-', 2)[0]
     cluster.update(interpreter['options'])
-    print cluster
   # Multi cluster
   elif has_multi_cluster():
     cluster = json.loads(request.POST.get('cluster', '""')) # Via Catalog autocomplete API or Notebook create sessions
@@ -351,9 +350,9 @@ def get_api(request, snippet):
   LOG.info('Selected cluster %s %s interface %s' % (cluster_name, cluster, interface))
   snippet['interface'] = interface
 
-  if interface == 'hiveserver2' or interface == 'hms':
+  if interface.startswith('hiveserver2') or interface == 'hms':
     from notebook.connectors.hiveserver2 import HS2Api
-    return HS2Api(user=request.user, request=request, cluster=cluster)
+    return HS2Api(user=request.user, request=request, cluster=cluster, interface=interface)
   elif interface == 'oozie':
     return OozieApi(user=request.user, request=request)
   elif interface == 'livy':
@@ -429,12 +428,13 @@ def _get_snippet_session(notebook, snippet):
 
 class Api(object):
 
-  def __init__(self, user, interpreter=None, request=None, cluster=None, query_server=None):
+  def __init__(self, user, interpreter=None, request=None, cluster=None, query_server=None, interface=None):
     self.user = user
     self.interpreter = interpreter
     self.request = request
     self.cluster = cluster
     self.query_server = query_server
+    self.interface = interface
 
   def create_session(self, lang, properties=None):
     return {
@@ -550,12 +550,14 @@ class Api(object):
   def get_log_is_full_log(self, notebook, snippet):
     return True
 
+
 def _get_snippet_name(notebook, unique=False, table_format=False):
   name = (('%(name)s' + ('-%(id)s' if unique else '') if notebook.get('name') else '%(type)s-%(id)s') % notebook)
   if table_format:
     name = re.sub('[-|\s:]', '_', name)
   return name
 
+
 class ExecutionWrapper():
   def __init__(self, api, notebook, snippet, callback=None):
     self.api = api

+ 7 - 4
desktop/libs/notebook/src/notebook/connectors/hiveserver2.py

@@ -17,14 +17,15 @@
 
 import binascii
 import copy
-import logging
 import json
+import logging
 import re
 import urllib
 
 from django.urls import reverse
 from django.utils.translation import ugettext as _
 
+from desktop.auth.backend import is_admin
 from desktop.conf import USE_DEFAULT_CONFIGURATION
 from desktop.lib.conf import BoundConfig
 from desktop.lib.exceptions import StructuredException
@@ -37,8 +38,6 @@ from metadata.optimizer_client import OptimizerApi
 
 from notebook.connectors.base import Api, QueryError, QueryExpired, OperationTimeout, OperationNotSupported, _get_snippet_name, Notebook
 
-from desktop.auth.backend import is_admin
-
 LOG = logging.getLogger(__name__)
 
 
@@ -698,8 +697,12 @@ DROP TABLE IF EXISTS `%(table)s`;
       name = 'hive'
     elif snippet['type'] == 'impala':
       name = 'impala'
+    elif self.interface == 'hms':
+      name = 'hms'
+    elif self.interface.startswith('hiveserver2-'):
+      name = self.interface.replace('hiveserver2-', '')
     else:
-      name = 'sparksql'
+      name = 'sparksql' # Backward compatibility until HUE-8758
 
     return dbms.get(self.user, query_server=get_query_server_config(name=name, cluster=cluster))