Google cloud platform 仅在大查询作业完成后触发数据流的方法

Google cloud platform 仅在大查询作业完成后触发数据流的方法,google-cloud-platform,google-bigquery,google-cloud-functions,google-cloud-dataflow,Google Cloud Platform,Google Bigquery,Google Cloud Functions,Google Cloud Dataflow,实际上,我的数据需要执行以下步骤: GCS bucket中的新对象触发一个Google云函数,该函数创建一个BigQuery作业,将该数据加载到BigQuery 我需要低成本的解决方案来知道这个大查询作业何时完成,并仅在作业完成后触发数据流管道 Obs: 我知道Google云功能的BigQuery alpha触发器,但我 不知道这是不是一个好主意,从我看到这个触发器使用的工作 id,这从我所看到的是无法修复的,无论何时运行作业 显然,必须再次部署该功能。当然 这是一个阿尔法解决方案 我读到了S

实际上,我的数据需要执行以下步骤:

GCS bucket中的新对象触发一个Google云函数,该函数创建一个BigQuery作业,将该数据加载到BigQuery

我需要低成本的解决方案来知道这个大查询作业何时完成,并仅在作业完成后触发数据流管道

Obs:

  • 我知道Google云功能的BigQuery alpha触发器,但我
    不知道这是不是一个好主意,从我看到这个触发器使用的工作 id,这从我所看到的是无法修复的,无论何时运行作业 显然,必须再次部署该功能。当然
    这是一个阿尔法解决方案
  • 我读到了Stackdriver日志->发布/订阅->谷歌云功能->数据流解决方案,但没有找到任何日志
    指示作业已完成
  • 我的文件很大,所以使用谷歌云函数等待作业完成不是一个好主意

您可以查看Cloud Composer,它由Apache Airflow管理,用于按顺序编排作业。Composer创建DAG并执行DAG的每个节点,还检查依赖项,以确保根据您定义的条件并行或顺序运行


您可以看看这里提到的示例-

尽管您提到了Stackdriver日志记录,但您可以将其与此过滤器一起使用

resource.type="bigquery_resource"
protoPayload.serviceData.jobCompletedEvent.job.jobStatus.state="DONE"
severity="INFO"
如果需要,还可以添加数据集过滤器

然后在此高级筛选器上创建一个sink-into函数并运行数据流作业


如果这与您的期望不符,您能详细说明原因吗?

事实上,我注意到我需要“Private Logs Viewer”角色在日志中查看作业完成的日志。所以实际上我倾向于使用stackdriver日志记录解决方案。你想为每个集成文件运行一个数据流吗?或者在加载所有文件之后?我要做的,即使不是完美的,就是创建一个每隔一段时间运行一次的云函数,并通过BQAPI检查作业id,看看它是否完成。如果是,请使用dataflow admin sdk运行dataflow管道。您可以将数据存储用作跟踪作业ID的队列,并使用云调度程序创建cron作业。您是否考虑过在一个数据流管道中执行所有步骤?然后,按顺序进行操作就很容易了。@guillaumeblaquiere为文件生成的每个表运行数据流(使用自定义查询),我的目标。Composer是我们的选择之一,但由于他的价格,我们放弃了它。这是我们目前的策略,由于缺少“私有日志查看器”,我们在查看此日志时出错角色。您在哪里遇到此问题?当你创建水槽时?我已经解决了这个问题。要查看“jobCompleted”日志,我需要“Private Log Viewer”角色(在IAM中)拥有的expecific权限。谢谢,现在我认为解决方案Stackdriver->pubsub->Google cloud Function->Dataflow最适合我的问题。谢谢,问题解决了。