代码:如何在BigQuery中进行批处理操作poll_job?
batch.add(bigquery.jobs().insert(projectId=project_id, body=query_request_body))
一旦我做batch.execute()
,是有办法,我可以这批请求对象如果批处理操作的所有工作已经完成,其将返回true上做一个poll_job()
?
代码:如何在BigQuery中进行批处理操作poll_job?
batch.add(bigquery.jobs().insert(projectId=project_id, body=query_request_body))
一旦我做batch.execute()
,是有办法,我可以这批请求对象如果批处理操作的所有工作已经完成,其将返回true上做一个poll_job()
?
批处理允许您的客户端将多个API调用放入一个请求中。这使得您使用http通道的效率稍高一些。请注意,BigQuery本身没有提供“批处理”API:每个API调用都是独立处理的。
鉴于此,那么你将需要构建批量调用jobs.get
调用来检查所有工作。
如果您为每个插入的作业提供job_id
引用,那么这将很容易构建,因为您拥有所有的job_ids
。如果没有,您将不得不从所有那些jobs.insert
调用中的批量回复中提取这些。 (您可能已经在检查批量回复以确保所有呼叫都成功,因此提取一点额外的数据对您来说可能是微不足道的。)
听起来您的最终目标听起来像是尽可能高效与您的http连接,所以不要忘记从连续批量的jobs.get
调用中删除已完成的作业。
综上所述,有一种更简单的方法可以提高渠道的使用效率:如果您只想等待所有工作完成,那么您可以逐个轮询每个工作,直到完成。延迟将受最慢的工作限制,并且单个工作请求更易于管理。
感谢您的回应!你的回答是有道理的 –