【发布时间】:2018-03-23 05:05:53
【问题描述】:
我们正在使用 Beam Python SDK 构建数据管道并尝试在 Dataflow 上运行,但出现以下错误,
A setup error was detected in beamapp-xxxxyyyy-0322102737-03220329-8a74-harness-lm6v. Please refer to the worker-startup log for detailed information.
但找不到详细的工作器启动日志。
我们尝试增加内存大小、工人数量等,但仍然遇到同样的错误。
这是我们使用的命令,
python run.py \
--project=xyz \
--runner=DataflowRunner \
--staging_location=gs://xyz/staging \
--temp_location=gs://xyz/temp \
--requirements_file=requirements.txt \
--worker_machine_type n1-standard-8 \
--num_workers 2
管道sn-p,
data = pipeline | "load data" >> beam.io.Read(
beam.io.BigQuerySource(query="SELECT * FROM abc_table LIMIT 100")
)
data | "filter data" >> beam.Filter(lambda x: x.get('column_name') == value)
上述管道只是从 BigQuery 加载数据并根据某些列值进行过滤。此管道在 DirectRunner 中的工作方式类似于魅力,但在 Dataflow 上却失败了。
我们是否有任何明显的设置错误?其他人得到同样的错误?我们可以使用一些帮助来解决问题。
更新:
我们的管道代码分布在多个文件中,因此我们创建了一个 python 包。我们通过传递 --setup_file 参数而不是 --requirements_file 解决了设置错误问题。
【问题讨论】:
-
您可以在 GCP Stackdriver 中找到日志(转到 GCP Console -> Logging -> Logs 并选择 DataFlow 作业,但失败了)。
-
我们的管道代码分布在多个文件中,因此我们创建了一个 python 包。我们通过传递
--setup_file参数解决了设置错误问题。 -
--requirements_file 和 --setup_file 过去对我不起作用,所以我建议您使用 --extra_package 并传递模块的 tar.gz,您可以通过打电话给
python setup.py sdist。 -
我认为最好将您的更新作为answer to your own question
标签: python google-cloud-dataflow apache-beam