BigQuery 查询响应“jobComplete”:错误
Posted
技术标签:
【中文标题】BigQuery 查询响应“jobComplete”:错误【英文标题】:BigQuery query response 'jobComplete': False 【发布时间】:2016-11-08 17:03:55 【问题描述】:我有以下功能:
def query_big_query(query_data, project_id):
credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials_bq.json')
bigquery_service = build('bigquery', 'v2', credentials=credentials)
try:
query_request = bigquery_service.jobs()
query_response = query_request.query(projectId=project_id, body=query_data).execute()
return query_response
except HttpError as error:
print ('Error :'.format(error.content))
raise error
但是有些查询没有返回数据,因为查询需要一些时间,并返回以下字符串:
u'kind': u'bigquery#queryResponse', u'jobComplete': False, u'jobReference': u'projectId': u'od', u'jobId': u'job_5wAuC'
我怎样才能等到作业完成(真)?或者我应该以不同的调用请求结果?
【问题讨论】:
【参考方案1】:尝试在 body 中指定更大的 timeoutMs,例如:
query_response = query_request.query(projectId=project_id, body='query': your_query, 'timeoutMs': 180000).execute()
默认情况下,timeoutMs 为 10000,即 10 秒。
参考:documentation
【讨论】:
【参考方案2】:试试这个:
response = bigquery_service.jobs().getQueryResults(projectId=my_project_id, jobId=my_job_id).execute()
while not response['jobComplete']:
print "waiting for response..."
time.sleep(1)
response = bigquery_service.jobs().getQueryResults(projectId=my_project_id, jobId=my_job_id).execute()
return response
【讨论】:
以上是关于BigQuery 查询响应“jobComplete”:错误的主要内容,如果未能解决你的问题,请参考以下文章
对 BigQuery 查询的错误响应:kind:discovery#restDescription 而不是 bigquery#queryResults
当从多个分表查询超过 4 亿行时,BigQuery 的预期查询响应性能是多少?
自 2016 年 2 月 19 日以来,BigQuery 交互式查询响应时间下降