def get(user, query_server=None): global DBMS_CACHE global DBMS_CACHE_LOCK if query_server is None: query_server = get_query_server_config() DBMS_CACHE_LOCK.acquire() try: DBMS_CACHE.setdefault(user.username, {}) if query_server['server_name'] not in DBMS_CACHE[user.username]: # Avoid circular dependency from beeswax.server.hive_server2_lib import HiveServerClientCompatible if query_server['server_name'] == 'impala': from impala.dbms import ImpalaDbms from impala.server import ImpalaServerClient DBMS_CACHE[user.username][ query_server['server_name']] = ImpalaDbms( HiveServerClientCompatible( ImpalaServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0]) else: from beeswax.server.hive_server2_lib import HiveServerClient DBMS_CACHE[user.username][ query_server['server_name']] = HiveServer2Dbms( HiveServerClientCompatible( HiveServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0]) return DBMS_CACHE[user.username][query_server['server_name']] finally: DBMS_CACHE_LOCK.release()
def get(user, query_server=None, cluster=None): global DBMS_CACHE global DBMS_CACHE_LOCK global RESET_HS2_QUERY_SERVER if query_server is None: query_server = get_query_server_config(connector=cluster) DBMS_CACHE_LOCK.acquire() try: DBMS_CACHE.setdefault(user.id, {}) if query_server['server_name'] not in DBMS_CACHE[user.id]: # Avoid circular dependency from beeswax.server.hive_server2_lib import HiveServerClientCompatible if query_server.get('dialect') == 'impala': from impala.dbms import ImpalaDbms from impala.server import ImpalaServerClient DBMS_CACHE[user.id][query_server['server_name']] = ImpalaDbms( HiveServerClientCompatible(ImpalaServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0] ) elif query_server['server_name'] == 'hms': from beeswax.server.hive_metastore_server import HiveMetastoreClient DBMS_CACHE[user.id][query_server['server_name']] = HiveServer2Dbms( HiveMetastoreClient(query_server, user), QueryHistory.SERVER_TYPE[1][0] ) else: from beeswax.server.hive_server2_lib import HiveServerClient DBMS_CACHE[user.id][query_server['server_name']] = HiveServer2Dbms( HiveServerClientCompatible(HiveServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0] ) elif RESET_HS2_QUERY_SERVER: from beeswax.server.hive_server2_lib import HiveServerClient, HiveServerClientCompatible RESET_HS2_QUERY_SERVER = False LOG.debug('Setting DBMS cache for the new hs2') DBMS_CACHE[user.id].clear() DBMS_CACHE[user.id][query_server['server_name']] = HiveServer2Dbms( HiveServerClientCompatible(HiveServerClient(query_server, user)), QueryHistory.SERVER_TYPE[1][0] ) return DBMS_CACHE[user.id][query_server['server_name']] finally: DBMS_CACHE_LOCK.release()