我在数据流上运行批处理作业,从BigQuery查询。当我使用DirectRunner时,一切正常,结果将写入新的BigQuery表。当我改用DataflowRunner时,事情似乎就会破裂。
日志显示30个工作器实例已成功启动。 Web UI中的图表显示作业已启动。前三个步骤显示“正在运行”,其余显示“未启动”。没有任何步骤显示任何转换的记录(即outputcollections都显示' - ')。日志显示许多看起来像这样的消息,这可能是问题所在:
skipping: failed to "StartContainer" for "python" with CrashLoopBackOff: "Back-off 10s restarting failed container=python pod=......
我后退了一步,然后运行了最小的wordcount示例,并成功完成了。因此,似乎为Dataflow runner启用了所有必需的API。我只想了解导致我的Dataflow作业挂起的原因。
我正在执行这样的工作:
python2.7 script.py --runner DataflowRunner --project projectname --requirements_file requirements.txt --staging_location gs://my-store/staging --temp_location gs://my-store/temp
答案 0 :(得分:2)
我不确定我的解决方案是否是上面粘贴的错误的原因,但修复依赖项问题(根本没有显示为日志中的错误!)确实解决了挂起的数据流过程。
因此,如果您有挂起过程,请确保您的工作人员具有所有必要的依赖关系。您可以通过--requirements_file参数或自定义setup.py脚本提供它们。
感谢我在this post中收到的帮助,管道似乎正在运行,尽管是VERY SLOWLY。