Bläddra i källkod

HUE-9466 [impala] Use Impala as the name of the editor when FENG is on

Romain 5 år sedan
förälder
incheckning
a0f4372dd1

+ 10 - 2
apps/beeswax/src/beeswax/hive_site.py

@@ -68,6 +68,7 @@ _CNF_HIVESERVER2_USE_SASL = 'hive.metastore.sasl.enabled'
 _CNF_HIVE_SUPPORT_CONCURRENCY = 'hive.support.concurrency'
 _CNF_HIVE_HOOK_PROTO_BASE_DIR = 'hive.hook.proto.base-directory'
 _CNF_HIVE_EXECUTION_MODE = 'hive.execution.mode'
+_CNF_HIVE_EXECUTION_ENGINE = 'hive.execution.engine'
 
 
 # Host is whatever up to the colon. Allow and ignore a trailing slash.
@@ -151,7 +152,10 @@ def hiveserver2_impersonation_enabled():
 
 def hiveserver2_jdbc_url():
   is_transport_mode_http = hiveserver2_transport_mode() == 'HTTP'
-  urlbase = 'jdbc:hive2://%s:%s/default' % (beeswax.conf.HIVE_SERVER_HOST.get(), beeswax.conf.HIVE_HTTP_THRIFT_PORT.get() if is_transport_mode_http else beeswax.conf.HIVE_SERVER_PORT.get())
+  urlbase = 'jdbc:hive2://%s:%s/default' % (
+      beeswax.conf.HIVE_SERVER_HOST.get(),
+      beeswax.conf.HIVE_HTTP_THRIFT_PORT.get() if is_transport_mode_http else beeswax.conf.HIVE_SERVER_PORT.get()
+  )
 
   if get_conf().get(_CNF_HIVESERVER2_USE_SSL, 'FALSE').upper() == 'TRUE':
     urlbase += ';ssl=true'
@@ -194,7 +198,8 @@ def get_use_sasl():
 
 
 def has_concurrency_support():
-  '''For SQL transactions like INSERT, DELETE, UPDATE since Hive 3. Possibly use set -v in future to obtain properties hive.create.as.acid=true & hive.create.as.insert.only=true'''
+  '''For SQL transactions like INSERT, DELETE, UPDATE since Hive 3. '''
+  ''''Possibly use set -v in future to obtain properties hive.create.as.acid=true & hive.create.as.insert.only=true'''
   return get_conf().get(_CNF_HIVE_SUPPORT_CONCURRENCY, 'TRUE').upper() == 'TRUE'
 
 def get_hive_hook_proto_base_directory():
@@ -203,6 +208,9 @@ def get_hive_hook_proto_base_directory():
 def get_hive_execution_mode():
   return get_conf().get(_CNF_HIVE_EXECUTION_MODE)
 
+def get_hive_execution_engine():
+  return get_conf().get(_CNF_HIVE_EXECUTION_ENGINE)
+
 def _parse_hive_site():
   """
   Parse hive-site.xml and store in _HIVE_SITE_DICT

+ 32 - 22
apps/beeswax/src/beeswax/views.py

@@ -229,11 +229,11 @@ def list_designs(request):
   prefix = 'q-'
   querydict_query = _copy_prefix(prefix, request.GET)
   # Manually limit up the user filter.
-  querydict_query[ prefix + 'type' ] = app_name
+  querydict_query[prefix + 'type'] = app_name
   # Get search filter input if any
   search_filter = request.GET.get('text', None)
   if search_filter is not None:
-    querydict_query[ prefix + 'text' ] = search_filter
+    querydict_query[prefix + 'text'] = search_filter
 
   paginator, page, filter_params = _list_designs(request.user, querydict_query, DEFAULT_PAGE_SIZE, prefix)
   designs_json = []
@@ -252,7 +252,7 @@ def list_designs(request):
 
 def list_trashed_designs(request):
   DEFAULT_PAGE_SIZE = 20
-  app_name= get_app_name(request)
+  app_name = get_app_name(request)
 
   user = request.user
 
@@ -260,11 +260,11 @@ def list_trashed_designs(request):
   prefix = 'q-'
   querydict_query = _copy_prefix(prefix, request.GET)
   # Manually limit up the user filter.
-  querydict_query[ prefix + 'type' ] = app_name
+  querydict_query[prefix + 'type'] = app_name
   # Get search filter input if any
   search_filter = request.GET.get('text', None)
   if search_filter is not None:
-    querydict_query[ prefix + 'text' ] = search_filter
+    querydict_query[prefix + 'text'] = search_filter
 
   paginator, page, filter_params = _list_designs(user, querydict_query, DEFAULT_PAGE_SIZE, prefix, is_trashed=True)
   designs_json = []
@@ -289,25 +289,27 @@ def my_queries(request):
   is the ``user`` filter, since this view only shows what belongs to the user.
   """
   DEFAULT_PAGE_SIZE = 30
-  app_name= get_app_name(request)
+  app_name = get_app_name(request)
 
   # Extract the history list.
   prefix = 'h-'
   querydict_history = _copy_prefix(prefix, request.GET)
   # Manually limit up the user filter.
-  querydict_history[ prefix + 'user' ] = request.user
-  querydict_history[ prefix + 'type' ] = app_name
-
-  hist_paginator, hist_page, hist_filter = _list_query_history(request.user,
-                                               querydict_history,
-                                               DEFAULT_PAGE_SIZE,
-                                               prefix)
+  querydict_history[prefix + 'user'] = request.user
+  querydict_history[prefix + 'type'] = app_name
+
+  hist_paginator, hist_page, hist_filter = _list_query_history(
+      request.user,
+      querydict_history,
+      DEFAULT_PAGE_SIZE,
+      prefix
+  )
   # Extract the saved query list.
   prefix = 'q-'
   querydict_query = _copy_prefix(prefix, request.GET)
   # Manually limit up the user filter.
-  querydict_query[ prefix + 'user' ] = request.user
-  querydict_query[ prefix + 'type' ] = app_name
+  querydict_query[prefix + 'user'] = request.user
+  querydict_query[prefix + 'type'] = app_name
 
   query_paginator, query_page, query_filter = _list_designs(request.user, querydict_query, DEFAULT_PAGE_SIZE, prefix)
   designs_json = []
@@ -385,7 +387,9 @@ def massage_query_history_for_json(app_name, query_history):
     'timeInMs': time.mktime(query_history.submission_date.timetuple()),
     'timeFormatted': query_history.submission_date.strftime("%x %X"),
     'designUrl': reverse(app_name + ':execute_design', kwargs={'design_id': query_history.design.id}),
-    'resultsUrl': not query_history.is_failure() and reverse(app_name + ':watch_query_history', kwargs={'query_history_id': query_history.id}) or ""
+    'resultsUrl': not query_history.is_failure() and reverse(
+        app_name + ':watch_query_history', kwargs={'query_history_id': query_history.id}
+    ) or ""
   }
 
 
@@ -425,7 +429,9 @@ def execute_query(request, design_id=None, query_history_id=None):
         handle, state = _get_query_handle_and_state(query_history)
 
       if 'on_success_url' in request.GET:
-        if request.GET.get('on_success_url') and any([regexp.match(request.GET.get('on_success_url')) for regexp in REDIRECT_WHITELIST.get()]):
+        if request.GET.get('on_success_url') and any(
+            [regexp.match(request.GET.get('on_success_url')) for regexp in REDIRECT_WHITELIST.get()]
+          ):
           action = 'watch-redirect'
         else:
           action = 'watch-results'
@@ -884,7 +890,7 @@ def _list_designs(user, querydict, page_size, prefix="", is_trashed=False):
     page = None
 
   # We need to pass the parameters back to the template to generate links
-  keys_to_copy = [ prefix + key for key in ('user', 'type', 'sort', 'text') ]
+  keys_to_copy = [prefix + key for key in ('user', 'type', 'sort', 'text')]
   filter_params = copy_query_dict(querydict, keys_to_copy)
 
   return paginator, page, filter_params
@@ -917,7 +923,7 @@ def parse_query_context(context):
     LOG.error("Invalid query context data: %s" % (context,))
     return None
 
-  if pair[0] == 'design':       # Translate design id to design obj
+  if pair[0] == 'design':  # Translate design id to design obj
     pair[1] = models.SavedQuery.get(int(pair[1]))
   return pair
 
@@ -1052,7 +1058,11 @@ def _list_query_history(user, querydict, page_size, prefix=""):
   # Search
   search_filter = querydict.get(prefix + 'search')
   if search_filter:
-    db_queryset = db_queryset.filter(Q(design__name__icontains=search_filter) | Q(query__icontains=search_filter) | Q(owner__username__icontains=search_filter))
+    db_queryset = db_queryset.filter(
+        Q(design__name__icontains=search_filter) |
+        Q(query__icontains=search_filter) |
+        Q(owner__username__icontains=search_filter)
+    )
 
   # Design type
   d_type = querydict.get(prefix + 'type')
@@ -1088,7 +1098,7 @@ def _list_query_history(user, querydict, page_size, prefix=""):
   pagenum = int(querydict.get(prefix + 'page', 1))
   if pagenum < 1:
     pagenum = 1
-  db_queryset = db_queryset[ page_size * (pagenum - 1) : page_size * pagenum ]
+  db_queryset = db_queryset[page_size * (pagenum - 1) : page_size * pagenum]
   paginator = Paginator(db_queryset, page_size, allow_empty_first_page=True)
 
   try:
@@ -1103,7 +1113,7 @@ def _list_query_history(user, querydict, page_size, prefix=""):
       _update_query_state(history.get_full_object())
 
   # We need to pass the parameters back to the template to generate links
-  keys_to_copy = [ prefix + key for key in ('user', 'type', 'sort', 'design_id', 'auto_query', 'search') ]
+  keys_to_copy = [prefix + key for key in ('user', 'type', 'sort', 'design_id', 'auto_query', 'search')]
   filter_params = copy_query_dict(querydict, keys_to_copy)
 
   return paginator, page, filter_params

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

@@ -267,8 +267,11 @@ def _default_interpreters(user):
   apps = appmanager.get_apps_dict(user)
 
   if 'hive' in apps:
+    from beeswax.hive_site import get_hive_execution_engine
+    interpreter_name = 'Impala' if get_hive_execution_engine() == 'impala' else 'Hive'  # Until using a proper dialect for 'FENG'
+
     interpreters.append(('hive', {
-      'name': 'Hive', 'interface': 'hiveserver2', 'options': {}
+      'name': interpreter_name, 'interface': 'hiveserver2', 'options': {}
     }),)
 
   if 'impala' in apps: