从发布/订阅通知

时间:2020-06-22 22:27:42

标签: apache-spark google-cloud-platform google-cloud-pubsub google-cloud-dataproc

我有一个后台服务,可以在Google Cloud Storage中生成文件。完成后,它将在输出文件夹中生成一个文件。

在我的流程中,我需要获取这些文件的列表,并使用文件列表启动DataProc Spark作业。处理不是实时的,需要数十分钟。

GCS具有notifications系统。它可以将通知流式传输到发布/订阅服务。

在GCS中,将创建一个文件.../feature/***/***.done来标识服务作业的完成情况。

  1. 我可以通过通配符在GCS中订阅新文件吗?

创建文件后,通知将发布到发布/订阅服务。

我相信我可以编写可以读取此通知的Cloud Function,通过某种魔术,它可以获取已修改文件的位置,并能够列出该文件夹中的所有文件。然后将另一条包含所有必需信息的消息发布到Pub / Sub

  1. 是否可以通过发布/订阅通知来启动DataProc作业?

理想情况下,最好使用Jobs而不是Streaming来降低成本。这可能意味着PubSub启动Job而不是流式传输Job从PubSub中提取新消息

1 个答案:

答案 0 :(得分:1)

问题1:我可以通过通配符在GCS中订阅新文件吗?

您可以设置GCS通知以按路径前缀进行过滤。请参阅-p选项here。 Cloud Pub / Sub在Beta中也有filtering-by-attribute API。您可以使用它根据GCS设置的attributes进行过滤。 filtering language支持GCS设置的属性的完全匹配和前缀检查。

发布到C​​loud Pub / Sub主题的消息将具有为您提供对象的存储桶和名称的属性,因此您应该能够轻松读取该存储桶/子路径中的其他文件。

问题2:是否可以通过发布/订阅通知来启动DataProc作业?

是的,您可以设置一个Cloud Function以从您的Cloud Pub / Sub主题进行订阅。然后,该函数可以使用DataProc client library启动DataProc集群,或执行任何其他操作。