由于某种原因,模板未写入 template_location。当我运行第一个命令时,管道被执行(奇怪),但模板从未生成。可能是什么原因?
我正在使用下面的cmd来创建模板
python -m my_first_beam.py \
--runner DataflowRunner \
--project my-project \
--staging_location gs://gk_beam/staging \
--temp_location gs://gk_beam/temp \
--template_location gs://gk_beam/templates/my_first_beam \
--region europe-west3
CMD 执行没有错误,但存储桶中没有创建模板
通过 apache beam python 创建经典模板时,您应该记住通过以下方法进行 gcloud 身份验证。
gcloud auth 应用程序-默认登录
os.environ.setdefault(“GOOGLE_APPLICATION_CREDENTIALS”,“path_of_service_account_key”)
然后只尝试运行创建模板命令。应该可以正常工作。
添加示例以供参考:
Apache Beam Python 代码:
# classic_template.py
import apache_beam as beam
from apache_beam.io import ReadFromText
from apache_beam.options.pipeline_options import SetupOptions, PipelineOptions
os.environ.setdefault("GOOGLE_APPLICATION_CREDENTIALS", "path_of_service_account_key")
class MyPipelineOptions(PipelineOptions):
@classmethod
def _add_argparse_args(cls, parser):
parser.add_value_provider_argument('--input',
type=str,
help='Path of the file to read from')
parser.add_value_provider_argument('--output',
type=str,
help='Output file to write results to.')
pipeline_options = PipelineOptions()
pipeline_options.view_as(SetupOptions).save_main_session = True
beam_options = pipeline_options.view_as(MyPipelineOptions)
pipeline = beam.Pipeline(options=beam_options)
lines = (pipeline | 'read' >> ReadFromText(beam_options.input))
pipeline.run().wait_until_finish()
创建经典模板的命令:
python classic_template.py \
--runner DataflowRunner
--temp_location location_for_temp_file_storage \
--template_location location_to_store_classic_template.json \
--save_main_session \
--project PROJECT_ID \
--region REGION
命令将被执行,您将看到模板文件在 template_location 处创建。
如有任何疑问,请在此询问。
谢谢。