是否有任何实用的方法来控制气流的配额和限制?
我对控制BigQuery并发特别感兴趣。
quotas on BigQuery有不同级别。因此,根据操作员的输入,应该有一种方法可以检查条件是否满足,否则请等待条件满足。
这似乎是Sensor-Operators的组成部分,例如针对像Redis这样的数据库进行查询:
QuotaSensor(Project, Dataset, Table, Query) >> QuotaAddOperator(Project, Dataset, Table, Query)
QuotaAddOperator(Project, Dataset, Table, Query) >> BigQueryOperator(Project, Dataset, Table, Query)
BigQueryOperator(Project, Dataset, Table, Query) >> QuotaSubOperator(Project, Dataset, Table, Query)
传感器必须检查以下条件:
- Global running queries <= 300
- Project running queries <= 100
- .. etc
是否已经有任何库可以帮我呢?插件? 还是其他更简单的解决方案?
否则,请遵循“传感器-操作员”方法。 如何将所有这些封装在一个运算符下?为避免重复代码, 一个运算符:QuotaBigQueryOperator
答案 0 :(得分:0)
当前,只能以编程方式获取Compute Engine quotas。但是,有一个打开的feature request可通过API获取/设置其他项目配额。您可以在此处发布您要实施的特定案例,并follow it进行跟踪并要求更新。
同时,作为解决方法,您可以尝试使用PythonOperator。有了它,您可以定义自己的自定义代码,并且能够对发送到quotaExceeded error(或您遇到的特定错误)的查询执行重试。这样,您就不必显式检查配额级别。您只需运行查询,然后重试直到执行。这是我正在考虑的策略的简化代码:
for query in QUERIES_TO_RUN:
while True:
try:
run(query)
except quotaExceededException:
continue # Jumps to the next cycle of the nearest enclosing loop.
break