阅读 Cloud Dataflow 文档后,我仍然不确定如何从 App Engine 运行我的数据流作业。可能吗?我的后端是用 Python 还是用 Java 编写的,这是否相关?谢谢!
3 回答
是的,这是可能的,您需要使用此处提到的“流式执行” 。
使用Google Cloud Pub/Sub作为流媒体源,您可以将其用作管道的“触发器”。
在 App Engine 中,您可以使用REST API对 Pub/Sub Hub 执行“Pub”操作。
一种方法确实是使用 App Engine 中的 Pub/Sub 来让 Cloud Dataflow 知道何时有新数据可用。然后,Cloud Dataflow 作业将持续运行,App Engine 将提供数据进行处理。
另一种方法是将设置 Cloud Dataflow 管道的代码添加到 App Engine 中的类(包括将 Dataflow SDK 添加到您的 GAE 项目)并以编程方式设置作业选项,如下所述:
https://cloud.google.com/dataflow/pipelines/specifying-exec-params
确保将 'runner' 选项设置为 DataflowPipelineRunner,以便它在 Google Cloud Platform 上异步执行。由于管道运行器(实际运行您的管道)不必与启动它的代码相同,因此此代码(直到 pipeline.run() )可以在 App Engine 中。
然后,您可以将端点或 servlet 添加到 GAE,当被调用时,它会运行设置管道的代码。
要安排更多时间,您可以在 GAE 中有一个 cron 作业,该作业调用启动管道的端点......
可能有一种方法可以从 App Engine 提交您的 Dataflow 作业,但这并不是因为缺少文档所建议的那样得到积极支持。APP Engine 的运行时环境使得执行某些所需的操作变得更加困难,例如获取凭据、提交数据流作业。