Răsfoiți Sursa

[impala] Specific query configuration can be overriden

Also propose an Impala property instead of Beeswax
Romain Rigaux 11 ani în urmă
părinte
comite
1a89213

+ 8 - 3
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -40,6 +40,8 @@ from beeswax.server.dbms import Table, NoSuchObjectException, DataTable,\
 
 LOG = logging.getLogger(__name__)
 
+IMPALA_RESULTSET_CACHE_SIZE = 'impala.resultset.cache.size'
+
 
 class HiveServerTable(Table):
   """
@@ -481,11 +483,14 @@ class HiveServerClient:
         for resource in query.get_configuration_statements():
           self.execute_statement(resource.strip())
 
-    configuration = self._get_query_configuration(query)
-    query_statement =  query.get_query_statement(statement)
+    configuration = {}
 
     if self.query_server['server_name'] == 'impala' and self.query_server['querycache_rows'] > 0:
-      configuration['impala.resultset.cache.size'] = str(self.query_server['querycache_rows'])
+      configuration[IMPALA_RESULTSET_CACHE_SIZE] = str(self.query_server['querycache_rows'])
+
+    # The query can override the default configuration
+    configuration.update(self._get_query_configuration(query))
+    query_statement = query.get_query_statement(statement)
 
     return self.execute_async_statement(statement=query_statement, confOverlay=configuration)
 

+ 2 - 2
apps/beeswax/src/beeswax/templates/execute.mako

@@ -72,12 +72,12 @@ ${layout.menubar(section='query')}
                     </div>
                     <div data-bind="css: {'error': $root.getSettingKeyErrors($index()).length > 0}" class="control-group">
                       <label>${_('Key')}</label>
-                      <input data-bind="value: key" type="text" class="settingsField span8" autocomplete="off" placeholder="mapred.reduce.tasks"/>
+                      <input data-bind="value: key" type="text" class="settingsField span8" autocomplete="off" placeholder="${ 'impala.resultset.cache.size' if app_name == 'impala' else 'mapred.reduce.tasks' }"/>
                     </div>
 
                     <div data-bind="css: {'error': $root.getSettingValueErrors($index()).length > 0}" class="control-group">
                       <label>${_('Value')}</label>
-                      <input data-bind="value: value" type="text" class="settingValuesField span8" placeholder="1"/>
+                      <input data-bind="value: value" type="text" class="settingValuesField span8" placeholder="${ '5000' if app_name == 'impala' else '1' }"/>
                     </div>
                   </div>
                   <!-- /ko -->