我的数据流作业流管道设计如下。
In
查询,这样对于5000个更新密钥,它将进行单个spanner调用这是一个流作业,由于 Spanner 更新调用而导致 OOM(如果我删除步骤 3 到 6,则不会出现 OOM)
作业分析器给出以下痕迹
来自分析器
java arrays copyofrange
占用更多内存,下面是作业日志
generic::unknown: org.apache.beam.sdk.util.UserCodeException: java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached at org.apache.beam.sdk.util.UserCodeException.wrap(UserCodeException.java:
正如 @John Hanley 所说,
java.lang.OutOfMemoryError: unable to create native thread
可以通过减少内存使用来优化管道以及为工作线程或每个线程分配更多可用内存来解决。
此外,请参阅此数据流管道图以可视化故障排除工作流程。