由于我在WriteToBigQuery操作之后执行一些任务,因此我编写了两个单独的函数,并在主类中执行它们以依次运行数据流管道。我已经在云存储上创建了相同的模板,并试图从云功能触发此自定义管道模板,但是它直接执行第二个功能,而不是第一个功能。
这是我的主班:
if __name__ == '__main__':
print "Starting Dataflow Pipeline"
writetobq()
writetocsv()
一些云功能代码:
BODY = {
"jobName": "{jobname}".format(jobname=JOBNAME),
"parameters": {
},
"environment": {
"tempLocation": "gs://{bucket}/temp".format(bucket=BUCKET),
"zone": "europe-west1-b"
}
}
request = service.projects().templates().launch(projectId=PROJECT, gcsPath=GCSPATH, body=BODY)
response = request.execute()
在触发此管道时,我没有收到任何错误,但它仅执行writetocsv(),我希望它首先应执行writetobq(),然后执行writetocsv()。如果我在本地运行此管道代码,那么它将给我预期的输出。
答案 0 :(得分:0)
数据流模板(我认为这就是模板的意思)不会执行您的主类。它只是存储一个Dataflow管道并执行该管道。因此,如果您需要将第二个功能作为模板的一部分执行,则它必须是管道的一部分(例如,ParDo步骤)。
在您看来,您似乎需要WriteToBigQuery'. Unfortunately this is not possible today since
WriteToBigQuery`步骤后面的内容不会返回结果。
是否可以从启动模板的代码中添加执行第二个功能(作为本地执行还是第二个Dataflow作业)?