从python脚本创建和暂存数据流模板

时间:2018-07-27 12:58:45

标签: python-2.7 google-cloud-dataflow dataflow

我是数据流的新手,从我的python脚本创建模板时遇到了一些麻烦。我的脚本仅用于测试,我从存储桶中读取文件,然后再次将其写入存储桶。所以是一个非常简单的脚本。但是,当我运行用于创建数据流模板的命令时,没有任何模板。这是我的命令:

python test.py \
--runner DataflowRunner \
--project my_gcp_project_id \
--staging_location gs://mybucket/staging \
--temp_location gs://mybucket/temp \
--output gs://mybucket/output \
--input gs://mybucket/input.txt\
--template_location gs://mybucket/templates/mytemplate

如何在template_location中获得模板?谢谢

1 个答案:

答案 0 :(得分:1)

我找到了我想念的东西。因此,当我在代码中定义pipelineoptions时,我仅放置输入和输出,而没有考虑template_location选项。所以我要做的就是将其添加到代码中的pipelineoptions中,如下所示:

import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions
pipeline_options = {
    'project': my_gcp_project_id ,
    'staging_location': 'gs://' + mybucket+ '/staging',
    'runner': 'DataflowRunner',
    'job_name': job + '-vony',
    'output': 'gs://'+mybucket+ '/output',
    'input': 'gs://'+mybucket+'/input.txt',
    'temp_location': 'gs://' + mybucket+ '/temp',
    'template_location': 'gs://' + mybucket+ '/templates/' + myproject_name+ '-vony_tmpl'}
pipeline_options = PipelineOptions.from_dictionary(pipeline_options)
p = beam.Pipeline(options=pipeline_options)