|
|
@@ -169,7 +169,8 @@ class HS2Api(Api):
|
|
|
|
|
|
reuse_session = session is not None
|
|
|
if not reuse_session:
|
|
|
- session = dbms.get(self.user, query_server=get_query_server_config(name=lang, cluster=self.cluster)).open_session(self.user)
|
|
|
+ db = dbms.get(self.user, query_server=get_query_server_config(name=lang, connector=self.interpreter))
|
|
|
+ session = db.open_session(self.user)
|
|
|
|
|
|
response = {
|
|
|
'type': lang,
|
|
|
@@ -240,7 +241,7 @@ class HS2Api(Api):
|
|
|
|
|
|
@query_error_handler
|
|
|
def execute(self, notebook, snippet):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
statement = self._get_current_statement(notebook, snippet)
|
|
|
session = self._get_session(notebook, snippet['type'])
|
|
|
@@ -274,7 +275,7 @@ class HS2Api(Api):
|
|
|
@query_error_handler
|
|
|
def check_status(self, notebook, snippet):
|
|
|
response = {}
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
handle = self._get_handle(snippet)
|
|
|
operation = db.get_operation_status(handle)
|
|
|
@@ -295,7 +296,7 @@ class HS2Api(Api):
|
|
|
|
|
|
@query_error_handler
|
|
|
def fetch_result(self, notebook, snippet, rows, start_over):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
handle = self._get_handle(snippet)
|
|
|
try:
|
|
|
@@ -343,7 +344,7 @@ class HS2Api(Api):
|
|
|
|
|
|
@query_error_handler
|
|
|
def cancel(self, notebook, snippet):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
handle = self._get_handle(snippet)
|
|
|
db.cancel_operation(handle)
|
|
|
@@ -352,7 +353,7 @@ class HS2Api(Api):
|
|
|
|
|
|
@query_error_handler
|
|
|
def get_log(self, notebook, snippet, startFrom=None, size=None):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
handle = self._get_handle(snippet)
|
|
|
return db.get_log(handle, start_over=startFrom == 0)
|
|
|
@@ -364,7 +365,7 @@ class HS2Api(Api):
|
|
|
from impala import conf as impala_conf
|
|
|
|
|
|
if (snippet['type'] == 'hive' and beeswax_conf.CLOSE_QUERIES.get()) or (snippet['type'] == 'impala' and impala_conf.CLOSE_QUERIES.get()):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
try:
|
|
|
handle = self._get_handle(snippet)
|
|
|
@@ -381,7 +382,7 @@ class HS2Api(Api):
|
|
|
|
|
|
def can_start_over(self, notebook, snippet):
|
|
|
try:
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
handle = self._get_handle(snippet)
|
|
|
# Test handle to verify if still valid
|
|
|
db.fetch(handle, start_over=True, rows=1)
|
|
|
@@ -440,7 +441,7 @@ class HS2Api(Api):
|
|
|
|
|
|
@query_error_handler
|
|
|
def autocomplete(self, snippet, database=None, table=None, column=None, nested=None):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
query = None
|
|
|
|
|
|
if snippet.get('query'):
|
|
|
@@ -453,21 +454,21 @@ class HS2Api(Api):
|
|
|
query = self._get_current_statement(notebook, snippet)['statement']
|
|
|
database, table = '', ''
|
|
|
|
|
|
- return _autocomplete(db, database, table, column, nested, query=query, cluster=self.cluster)
|
|
|
+ return _autocomplete(db, database, table, column, nested, query=query, interpreter=self.interpreter)
|
|
|
|
|
|
|
|
|
@query_error_handler
|
|
|
def get_sample_data(self, snippet, database=None, table=None, column=None, async=False, operation=None):
|
|
|
try:
|
|
|
- db = self._get_db(snippet, async, cluster=self.cluster)
|
|
|
- return _get_sample_data(db, database, table, column, async, operation=operation, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, async, interpreter=self.interpreter)
|
|
|
+ return _get_sample_data(db, database, table, column, async, operation=operation, interpreter=self.interpreter)
|
|
|
except QueryServerException, ex:
|
|
|
raise QueryError(ex.message)
|
|
|
|
|
|
|
|
|
@query_error_handler
|
|
|
def explain(self, notebook, snippet):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
response = self._get_current_statement(notebook, snippet)
|
|
|
session = self._get_session(notebook, snippet['type'])
|
|
|
|
|
|
@@ -489,7 +490,7 @@ class HS2Api(Api):
|
|
|
|
|
|
@query_error_handler
|
|
|
def export_data_as_hdfs_file(self, snippet, target_file, overwrite):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
handle = self._get_handle(snippet)
|
|
|
max_rows = DOWNLOAD_ROW_LIMIT.get()
|
|
|
@@ -501,7 +502,7 @@ class HS2Api(Api):
|
|
|
|
|
|
|
|
|
def export_data_as_table(self, notebook, snippet, destination, is_temporary=False, location=None):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
response = self._get_current_statement(notebook, snippet)
|
|
|
session = self._get_session(notebook, snippet['type'])
|
|
|
@@ -664,11 +665,11 @@ DROP TABLE IF EXISTS `%(table)s`;
|
|
|
|
|
|
|
|
|
def get_browse_query(self, snippet, database, table, partition_spec=None):
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
table = db.get_table(database, table)
|
|
|
if table.is_impala_only:
|
|
|
snippet['type'] = 'impala'
|
|
|
- db = self._get_db(snippet, cluster=self.cluster)
|
|
|
+ db = self._get_db(snippet, interpreter=self.interpreter)
|
|
|
|
|
|
if partition_spec is not None:
|
|
|
decoded_spec = urllib.unquote(partition_spec)
|
|
|
@@ -693,23 +694,19 @@ DROP TABLE IF EXISTS `%(table)s`;
|
|
|
return HiveServerQueryHandle(**handle)
|
|
|
|
|
|
|
|
|
- def _get_db(self, snippet, async=False, cluster=None):
|
|
|
+ def _get_db(self, snippet, async=False, interpreter=None):
|
|
|
if not async and snippet['type'] == 'hive':
|
|
|
name = 'beeswax'
|
|
|
elif snippet['type'] == 'hive':
|
|
|
name = 'hive'
|
|
|
- elif snippet['type'] == 'impala':
|
|
|
- name = 'impala'
|
|
|
elif snippet['type'] == 'llap':
|
|
|
name = 'llap'
|
|
|
- elif self.interface == 'hms':
|
|
|
- name = 'hms'
|
|
|
- elif self.interface.startswith('hiveserver2-'):
|
|
|
- name = self.interface.replace('hiveserver2-', '')
|
|
|
+ elif snippet['type'] == 'impala':
|
|
|
+ name = 'impala'
|
|
|
else:
|
|
|
- name = 'sparksql' # Backward compatibility until HUE-8758
|
|
|
+ name = 'sparksql'
|
|
|
|
|
|
- return dbms.get(self.user, query_server=get_query_server_config(name=name, cluster=cluster))
|
|
|
+ return dbms.get(self.user, query_server=get_query_server_config(name=name, connector=interpreter)) # Note: name is not used if interpreter is present
|
|
|
|
|
|
|
|
|
def _parse_job_counters(self, job_id):
|
|
|
@@ -827,12 +824,12 @@ DROP TABLE IF EXISTS `%(table)s`;
|
|
|
|
|
|
|
|
|
def describe_column(self, notebook, snippet, database=None, table=None, column=None):
|
|
|
- db = self._get_db(snippet, self.cluster)
|
|
|
+ db = self._get_db(snippet, self.interpreter)
|
|
|
return db.get_table_columns_stats(database, table, column)
|
|
|
|
|
|
|
|
|
def describe_table(self, notebook, snippet, database=None, table=None):
|
|
|
- db = self._get_db(snippet, self.cluster)
|
|
|
+ db = self._get_db(snippet, self.interpreter)
|
|
|
tb = db.get_table(database, table)
|
|
|
return {
|
|
|
'status': 0,
|
|
|
@@ -849,7 +846,7 @@ DROP TABLE IF EXISTS `%(table)s`;
|
|
|
}
|
|
|
|
|
|
def describe_database(self, notebook, snippet, database=None):
|
|
|
- db = self._get_db(snippet, self.cluster)
|
|
|
+ db = self._get_db(snippet, self.interpreter)
|
|
|
return db.get_database(database)
|
|
|
|
|
|
def get_log_is_full_log(self, notebook, snippet):
|