Python 如何在GCP中调用以Go from Cloud函数编写的数据流作业

Python 如何在GCP中调用以Go from Cloud函数编写的数据流作业,python,go,google-cloud-functions,google-cloud-dataflow,apache-beam,Python,Go,Google Cloud Functions,Google Cloud Dataflow,Apache Beam,我的目标是创建一种机制,当一个新文件上传到云存储时,它将触发一个云功能。最终,这个云函数将触发一个云数据流作业 我有一个限制,云数据流作业应该用Go编写,云函数应该用Python编写 我现在面临的问题是,我无法从云函数调用云数据流作业 用Go编写的云数据流中的问题是在Apache Beam Go SDK中没有定义模板位置变量。这就是我无法创建数据流模板的原因。而且,由于没有数据流模板,我可以从云函数调用云数据流作业的唯一方法是编写一个Python作业,该作业调用运行数据流作业的bash脚本 ba

我的目标是创建一种机制,当一个新文件上传到云存储时,它将触发一个云功能。最终,这个云函数将触发一个云数据流作业

我有一个限制,云数据流作业应该用Go编写,云函数应该用Python编写

我现在面临的问题是,我无法从云函数调用云数据流作业

用Go编写的云数据流中的问题是在Apache Beam Go SDK中没有定义
模板位置
变量。这就是我无法创建数据流模板的原因。而且,由于没有数据流模板,我可以从云函数调用云数据流作业的唯一方法是编写一个Python作业,该作业调用运行数据流作业的bash脚本

bash脚本如下所示:

go run wordcount.go \
--runner dataflow \
--input gs://dataflow-samples/shakespeare/kinglear.txt \
--output gs://${BUCKET?}/counts \
--project ${PROJECT?} \
--temp_location gs://${BUCKET?}/tmp/ \
--staging_location gs://${BUCKET?}/binaries/ \
--worker_harness_container_image=apache-docker-beam-snapshots-docker.bintray.io/beam/go:20180515
但上述机制无法创建新的数据流作业,而且看起来很麻烦

有没有更好的方法来实现我的目标?我在上述机制上做错了什么

云函数应该用Python编写

云数据流客户端SDK只能从模板创建数据流作业。因此,除非您创建自己的模板,否则无法实现此要求

我对云数据流作业的编写有一个限制 去

由于您的Python目标无法实现,您的另一个选择是在云函数中运行Go程序。Go的云函数位于
alpha
中。然而,我不知道有什么方法可以在云函数中执行apachebeam(Dataflow)程序。请记住,除非您选择
runner=DirectRunner
,否则Apache Beam程序从本地开始执行,并将自身连接到运行在其他地方的集群(数据流、Spark等)

您选择了最不成熟的语言来使用Apache Beam。成熟度和特性的顺序是Java(优秀)、Python(优秀且每天都在进步)、Go(还没有准备好进入黄金时段)


如果您想运行用Go-on-Cloud数据流编写的Apache Beam程序,那么您需要使用本地系统、Google计算引擎或Google应用程序引擎Flex等平台。我不知道App Engine Standard是否可以在Go中运行Apache Beam。

我发现Apache Beam Go SDK支持
worker\u binary
参数,该参数类似于Java数据流作业的
模板位置。使用此选项,我可以从python云函数启动go数据流作业。

嘿,John,谢谢你的回答。我发现Apache Beam Go SDK支持
worker\u binary
参数,这与Java数据流作业的
模板位置
类似。使用此选项,我能够从python云函数启动go数据流作业。