使用 Google DataFlow/Apache Beam 来并行化图像处理或抓取任务是否有意义?
Does it make sense to use Google DataFlow/Apache Beam to parallelize image processing or crawling tasks?
我正在考虑 Google DataFlow 作为 运行 管道的一个选项,该管道涉及以下步骤:
- 正在从网络下载图像;
- 正在处理图像。
我喜欢 DataFlow 管理完成工作所需的 VM 的生命周期,因此我不需要自己启动或停止它们,但我遇到的所有示例都将它用于数据挖掘类任务。我想知道它是否是其他批处理任务(如图像处理和抓取)的可行选择。
此用例可能适用于 Dataflow/Beam。
如果您想以流方式执行此操作,您可以让爬虫生成 URL 并将它们添加到 PubSub 或 Kafka 队列;并编写一个 Beam 管道来执行以下操作:
- 从 PubSub 读取
- 在 ParDo 中下载网站内容
- 从另一个 ParDo 中的网站解析图像 URL*
- 下载每个图像并再次使用 ParDo 对其进行处理
- 根据您希望从图像中获取的信息,将结果存储在 GCS、BigQuery 或其他数据库中。
您可以对批处理作业执行相同的操作,只需更改您从中读取 URL 的源。
*解析这些图像 URL 后,您可能还想重新排列数据,以获得一些并行性。
我正在考虑 Google DataFlow 作为 运行 管道的一个选项,该管道涉及以下步骤:
- 正在从网络下载图像;
- 正在处理图像。
我喜欢 DataFlow 管理完成工作所需的 VM 的生命周期,因此我不需要自己启动或停止它们,但我遇到的所有示例都将它用于数据挖掘类任务。我想知道它是否是其他批处理任务(如图像处理和抓取)的可行选择。
此用例可能适用于 Dataflow/Beam。
如果您想以流方式执行此操作,您可以让爬虫生成 URL 并将它们添加到 PubSub 或 Kafka 队列;并编写一个 Beam 管道来执行以下操作:
- 从 PubSub 读取
- 在 ParDo 中下载网站内容
- 从另一个 ParDo 中的网站解析图像 URL*
- 下载每个图像并再次使用 ParDo 对其进行处理
- 根据您希望从图像中获取的信息,将结果存储在 GCS、BigQuery 或其他数据库中。
您可以对批处理作业执行相同的操作,只需更改您从中读取 URL 的源。
*解析这些图像 URL 后,您可能还想重新排列数据,以获得一些并行性。