我的管道在CombineFn
内创建了较大的中间数组。当我与少量工人一起运行时,管道会成功。当我增加工作人员的数量时,由于此步骤中工作人员的OOM错误,导致管道失败。我不完全确定为什么会发生这种情况,但是我最好的猜测是数据流低估了add_input步骤中所需的内存量并创建了太多的累加器。
是否可以通过某种方式向管道提供提示,例如每个累加器需要X MB的内存?
我在here之前发布了有关此问题的信息。
我现在正在使用Apache Beam Python SDK 2.7,但问题仍然存在。
答案 0 :(得分:1)
我能够通过创建一个数组,然后立即删除一个比add_input
函数中的中间文件大一点的数组来解决此问题。在不了解Google内部信息的情况下,很难说出为什么这样做有效,而且如果我继续增加工作人员的数量,有可能再次遇到相同的问题。但是,如果有人遇到相同问题,请尝试一下。