def get_jobs(self, notebook, snippet, logs): jobs = [] if snippet['type'] == 'hive': engine = self._get_hive_execution_engine(notebook, snippet) jobs_with_state = parse_out_jobs(logs, engine=engine, with_state=True) jobs = [{ 'name': job.get('job_id', ''), 'url': reverse('jobbrowser.views.single_job', kwargs={'job': job.get('job_id', '')}), 'started': job.get('started', False), 'finished': job.get('finished', False) } for job in jobs_with_state] elif snippet['type'] == 'impala' and has_query_browser: query_id = unpack_guid_base64(snippet['result']['handle']['guid']) progress = min(self.progress(notebook, snippet, logs), 99) if snippet['status'] != 'available' and snippet[ 'status'] != 'success' else 100 jobs = [{ 'name': query_id, 'url': '/hue/jobbrowser#!id=%s' % query_id, 'started': True, 'finished': False, 'percentJob': progress }] return jobs
def _get_impala_query_id(self, snippet): guid = None if 'result' in snippet and 'handle' in snippet['result'] and 'guid' in snippet['result']['handle']: try: guid = unpack_guid_base64(snippet['result']['handle']['guid']) except Exception, e: LOG.warn('Failed to decode operation handle guid: %s' % e)
def _get_impala_query_id(self, snippet): guid = None if 'result' in snippet and 'handle' in snippet['result'] and 'guid' in snippet['result']['handle']: try: guid = unpack_guid_base64(snippet['result']['handle']['guid']) except Exception as e: LOG.warn('Failed to decode operation handle guid: %s' % e) else: LOG.warn('Snippet does not contain a valid result handle, cannot extract Impala query ID.') return guid
def get_jobs(self, notebook, snippet, logs): jobs = [] patch_snippet_for_connector(snippet) if snippet['dialect'] == 'hive': engine = self._get_hive_execution_engine(notebook, snippet) jobs_with_state = parse_out_jobs(logs, engine=engine, with_state=True) queries_with_state = parse_out_queries(logs, engine=engine, with_state=True) jobs = [{ 'name': job.get('job_id', ''), 'url': reverse('jobbrowser.views.single_job', kwargs={'job': job.get('job_id', '')}) if has_jobbrowser else '', 'started': job.get('started', False), 'finished': job.get('finished', False) } for job in jobs_with_state] if has_hive_query_browser: jobs += [{ 'name': job.get('job_id', ''), 'url': 'api/job/queries-hive/', 'started': job.get('started', False), 'finished': job.get('finished', False) } for job in queries_with_state] elif snippet['dialect'] == 'impala' and has_query_browser: guid = snippet['result']['handle']['guid'] if isinstance(guid, str): guid = guid.encode('utf-8') query_id = unpack_guid_base64(guid) progress = min(self.progress(notebook, snippet, logs), 99) if snippet['status'] != 'available' and snippet[ 'status'] != 'success' else 100 jobs = [{ 'name': query_id, 'url': '/hue/jobbrowser#!id=%s' % query_id, 'started': True, 'finished': False, 'percentJob': progress }] return jobs