从 Pub/Sub 通知启动 DataProc 作业
Start DataProc job from Pub/Sub notification
我有一个后台服务,可以在 Google 云存储中生成文件。完成后,它会在输出文件夹中生成一个文件。
在我的流程中,我需要获取这些文件的列表并使用文件列表启动 DataProc Spark 作业。处理不是实时的,需要几十分钟。
GCS 有一个 notifications 系统。它可以将通知流式传输到 Pub/Sub 服务。
在 GCS 中,将创建一个文件 .../feature/***/***.done
来标识服务作业完成。
- 我可以通过通配符订阅 GCS 中的新文件吗?
文件创建后,通知会到达 Pub/Sub 服务。
我相信我可以编写 Cloud Function 来读取此通知,通过某种魔法获取修改文件的位置,并能够列出该文件夹中的所有文件。然后向 Pub/Sub 发布另一条消息,其中包含所有必需的信息
- 是否可以通过 Pub/Sub 通知启动 DataProc 作业?
理想情况下,最好使用 Jobs 而不是 Streaming 来降低成本。这可能意味着 PubSub 启动 Job 而不是流式传输 Job 从 PubSub
中拉取新消息
问题1:我可以通过通配符订阅GCS中的新文件吗?
您可以将 GCS 通知设置为按路径前缀过滤。见 -p 选项 here. Cloud Pub/Sub also has a filtering-by-attribute API in the Beta. You can use it to filter by the attributes set by GCS. The filtering language 支持对 GCS 设置的属性进行精确匹配和前缀检查。
发布到云 Pub/Sub 主题的消息将具有为您提供对象的存储桶和名称的属性,因此您应该能够轻松读取该 bucket/subpath 中的其他文件。
问题 2:是否可以通过 Pub/Sub 通知启动 DataProc 作业?
是的,您可以设置一个 Cloud Functions 来订阅您的 Cloud Pub/Sub 主题。然后该函数可以使用 DataProc client library 启动 DataProc 集群,或执行任何其他操作。
我有一个后台服务,可以在 Google 云存储中生成文件。完成后,它会在输出文件夹中生成一个文件。
在我的流程中,我需要获取这些文件的列表并使用文件列表启动 DataProc Spark 作业。处理不是实时的,需要几十分钟。
GCS 有一个 notifications 系统。它可以将通知流式传输到 Pub/Sub 服务。
在 GCS 中,将创建一个文件 .../feature/***/***.done
来标识服务作业完成。
- 我可以通过通配符订阅 GCS 中的新文件吗?
文件创建后,通知会到达 Pub/Sub 服务。
我相信我可以编写 Cloud Function 来读取此通知,通过某种魔法获取修改文件的位置,并能够列出该文件夹中的所有文件。然后向 Pub/Sub 发布另一条消息,其中包含所有必需的信息
- 是否可以通过 Pub/Sub 通知启动 DataProc 作业?
理想情况下,最好使用 Jobs 而不是 Streaming 来降低成本。这可能意味着 PubSub 启动 Job 而不是流式传输 Job 从 PubSub
中拉取新消息问题1:我可以通过通配符订阅GCS中的新文件吗?
您可以将 GCS 通知设置为按路径前缀过滤。见 -p 选项 here. Cloud Pub/Sub also has a filtering-by-attribute API in the Beta. You can use it to filter by the attributes set by GCS. The filtering language 支持对 GCS 设置的属性进行精确匹配和前缀检查。
发布到云 Pub/Sub 主题的消息将具有为您提供对象的存储桶和名称的属性,因此您应该能够轻松读取该 bucket/subpath 中的其他文件。
问题 2:是否可以通过 Pub/Sub 通知启动 DataProc 作业?
是的,您可以设置一个 Cloud Functions 来订阅您的 Cloud Pub/Sub 主题。然后该函数可以使用 DataProc client library 启动 DataProc 集群,或执行任何其他操作。