如何在Dataflow中使用带有GCS源存储区的watchfornewfiles?

时间:2018-06-04 20:54:52

标签: google-cloud-platform google-cloud-dataflow apache-beam

参考项目:Watching for new files matching a filepattern in Apache Beam

您可以将它用于简单的用例吗?我的用例是我有用户将数据上传到云存储 - >管道(处理csv到json) - >大查询。我知道云存储是有界的集合,所以它代表批量数据流。

我想要做的是保持管道在流模式下运行,一旦文件上传到云存储,它将通过管道进行处理。这可能与watchfornewfiles有关吗?

我编写了如下代码:

p.apply(TextIO.read().from("<bucketname>")         
    .watchForNewFiles(
        // Check for new files every 30 seconds         
        Duration.standardSeconds(30),                      
        // Never stop checking for new files
        Watch.Growth.<String>never()));

没有任何内容被转发到Big Query,但是管道显示它正在流式传输。

1 个答案:

答案 0 :(得分:0)

您可以在此处使用Google Cloud Storage触发器: https://cloud.google.com/functions/docs/calling/storage#functions-calling-storage-python

这些触发器使用类似于Cloud Pub / Sub的Cloud Functions,如果创建,删除/归档/或元数据更改,它们就会在对象上触发。

这些事件是使用Cloud Storage的发布/订阅通知发送的,但请注意,由于存在一些通知限制,因此请不要在同一存储桶中设置许多功能。

此外,在文档的末尾有一个指向示例实现的链接。