Google bigquery 气流:BigQueryOperator vs BigQuery配额和限制

Google bigquery 气流:BigQueryOperator vs BigQuery配额和限制,google-bigquery,airflow,airflow-operator,Google Bigquery,Airflow,Airflow Operator,有什么切实可行的方法来控制空气流量的配额和限制吗 我对控制BigQuery并发性特别感兴趣 有不同的层次。因此,根据操作员的输入,应该有一种方法来检查条件是否满足,否则等待条件满足 它似乎是由传感器操作员组成的,对redis之类的数据库进行查询,例如: QuotaSensor(Project, Dataset, Table, Query) >> QuotaAddOperator(Project, Dataset, Table, Query) QuotaAddOperator(Proj

有什么切实可行的方法来控制空气流量的配额和限制吗

我对控制BigQuery并发性特别感兴趣

有不同的层次。因此,根据操作员的输入,应该有一种方法来检查条件是否满足,否则等待条件满足

它似乎是由传感器操作员组成的,对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

-全局运行查询当前,只能通过编程方式获取。然而,通过API获取/设置其他项目配额是一个开放的过程。您可以在那里发布您希望实施的具体案例,并跟踪它并要求更新

同时,作为解决方法,您可以尝试使用。有了它,您可以定义自己的自定义代码,并且可以对您发送的查询执行重试,以获得一个(或获得的特定错误)。这样,您就不必显式地检查配额级别。您只需运行查询并重试,直到执行为止。这是我正在考虑的策略的简化代码:

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

目前,只能通过编程方式获取。然而,通过API获取/设置其他项目配额是一个开放的过程。您可以在那里发布您希望实施的具体案例,并跟踪它并要求更新

同时,作为解决方法,您可以尝试使用。有了它,您可以定义自己的自定义代码,并且可以对您发送的查询执行重试,以获得一个(或获得的特定错误)。这样,您就不必显式地检查配额级别。您只需运行查询并重试,直到执行为止。这是我正在考虑的策略的简化代码:

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

嗨,罗根。为了正确理解您想要做什么,您能解释一个潜在的用例吗?我的意思是,当配额即将达到时,你想做什么?暂时停止气流发送BQ作业?另一个需要确认的问题是:您希望根据代码本身的配额使用情况进行操作,不是吗?如果没有,则在给定配额超过您定义的任何限制时可能有用。Hi@Javier。确切地目前我有一个BQ Sql Orchestrator(在Jenkins上运行),它允许每个项目最多运行40个作业。。我有多个产品(大约200个),每个产品都有一个特定的GCP项目。这是可怕的保持账单分开。。。无论如何,有一些数据处理用例会触发每个项目数百个查询的队列。我需要工人/操作员等待,直到插槽可用。。。我不需要紧急警报,我只需要dag不要因为费率限制而停止或中断。。。所以我正试图在气流上达到我们詹金斯的行为。嗨,罗根。为了正确理解您想要做什么,您能解释一个潜在的用例吗?我的意思是,当配额即将达到时,你想做什么?暂时停止气流发送BQ作业?另一个需要确认的问题是:您希望根据代码本身的配额使用情况进行操作,不是吗?如果没有,则在给定配额超过您定义的任何限制时可能有用。Hi@Javier。确切地目前我有一个BQ Sql Orchestrator(在Jenkins上运行),它允许每个项目最多运行40个作业。。我有多个产品(大约200个),每个产品都有一个特定的GCP项目。这是可怕的保持账单分开。。。无论如何,有一些数据处理用例会触发每个项目数百个查询的队列。我需要工人/操作员等待,直到插槽可用。。。我不需要紧急警报,我只需要dag不要因为费率限制而停止或中断。。。所以我正试图在气流上达到我们詹金斯的行为。