我正在尝试使用 DataflowRunner 和 --no_use_public_ips 运行测试数据流管道。 它正在从 Bigquery 读取一个小表并在存储中写入 csv,所有这些都在同一个项目中。
python3 ./Dataflow/pipeline-v2.py --project='<>' --region='<>' --service_account_email='<>' --dataset_id='dataset_id' --ingest_table_name='titanic' --storage_bucket='<>' --temp_location='<>' --runner=DataflowRunner --subnetwork='<>' --no_use_public_ips
我收到此错误:
信息:apache_beam.runners.dataflow.dataflow_runner:2023-: JOB_MESSAGE_ERROR:工作流程失败。原因:S40:读取自 BigQuery/FilesToRemoveImpulse/Impulse+读取 BigQuery/FilesToRemoveImpulse/FlatMap()+读取 从 BigQuery/FilesToRemoveImpulse/Map(decode)+读取 BigQuery/MapFilesToRemove 失败。作业因工作项而失败 已经失败4次了。查看以前的日志条目以了解每个问题的原因 4个失败之一。如果日志仅包含一般超时错误 与访问外部资源(例如 MongoDB)相关,验证 工作人员服务帐户有权访问该资源的 子网。有关更多信息,请参阅 https://cloud.google.com/dataflow/docs/guides/common-errors。工作 尝试对这些工人进行项目:
Root cause: SDK disconnect. Worker ID: beamapp-root-..., Root cause: SDK disconnect. Worker ID: beamapp-root-..., Root cause: SDK disconnect. Worker ID: beamapp-root-...s, Root cause: SDK disconnect. Worker ID: beamapp-root-...
我怀疑此问题是由于 Dataflow 缺少从 Bigquery 表读取的权限而产生的,但我不确定这是否是原因。 service_account_email 拥有所有需要的 BQ 权限。
data = p | 'Read from BigQuery' >> beam.io.ReadFromBigQuery(query=query, use_standard_sql=True)
我不知道如何调试这个。我拥有的唯一信息来自我启动管道的虚拟机的 CLI 和云日志记录。
问题解决了。一个组件试图导入默认工作映像中不存在的库。