微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用从谷歌云存储到 bigquery 的云功能自动进行批处理 - 缺少某些东西

如何解决使用从谷歌云存储到 bigquery 的云功能自动进行批处理 - 缺少某些东西

我想要达到的目标: 每次我将文件上传到 Cloud Storage 时,它​​都会自动写入附加到 BigQuery。

我从事的工作: 云存储触发云功能工作正常。 Dataflow 模板 Cloud Storage to Big Query 运行良好。

但是它们不能一起工作。如何让云功能触发以激活数据流部分?是脚本还是我遗漏了一些设置?

缺少将它们全部连接起来的东西。我对这个比较陌生,我一直在寻找这方面的教程,但我不知道我是否一直在搜索错误的关键字,我找不到任何相关的教程。

解决方法

如果我正确理解您的问题,您想要的工作流程将是:

云功能 ---> Google 云存储 (GCS) ---> 云数据流 ---> BigQuery

而且,对您来说最重要的部分是如何在 GCS 中写入新文件时触发 Dataflow 作业。 GCS 中没有这样的功能可以这样做。您需要以某种方式对此进行协调。

为此,您可以添加另一个将是 triggered on a new file creation in GCS bucket 的云函数。而且,在该 Cloud Functions 函数中,您只需启动一个 Dataflow 管道。

架构最终会变成这样:

Cloud Function 1 ---> GCS ---> Cloud Function 2 ---> Dataflow 作业 ---> BigQuery

其中云函数 1 是您当前的云函数,云函数 2 是新文件到达存储桶并启动您的数据流时触发的新函数工作。

我想提一下,如果您没有在 BigQuery 中使用本机表,而是选择使用 External Table in GCS,则可以避免创建第二个 Cloud Function 和 Dataflow 作业。它有利有弊。根据您的情况,这可能是个好主意。

,

Dataflow 有一个 REST API,我认为这将是您的选择。

当您查看 the documentation 中的示例时,您可以在每个示例中的控制台、gcloud 和 API 之间进行选择。因此,如果您当前有工作模板,并且正在使用控制台或 gcloud 运行它,则只需将其转换为 API 中所示的 POST 请求即可。

您可以在适当的工具中测试请求(例如使用 POSTMAN)。当您有工作 POST 请求时,您必须以您的首选语言创建云函数,您将创建请求。对于 nodejs,您可以使用 this,对于 Python this,我相信您将能够在 Cloud Function 中搜索任何语言的示例音调。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。