我在Java中编写一个简单的Dataflow管道: PubsubIO - > ConvertToTableRowDoFn - > BigQueryIO
管道正在运行 - 数据按预期到达BigQuery - 但我在Dataflow工作日志中看到OutOfMemoryErrors。
我尝试过的一个实验是通过添加Thread.sleep(100)来减慢ConvertToTableRowDoFn的速度。我认为这会使BigQueryIO的批量更小,但令我惊讶的是,这使得OutOfMemoryErrors更频繁!
这让我觉得PubsubIO中的某些东西正在快速读取数据或者做太多的缓冲。有关如何调查此问题的任何提示,或有关PubsubIO如何在Google Dataflow环境中缓冲的提示?
答案 0 :(得分:1)
重新编译的FILE_TRIGGERING_RECORD_COUNT = 100000而不是500000的光束,此后没有看到任何OOM。