Google cloud dataflow 使用PubsubIO的Java OutOfMemoryError

Google cloud dataflow 使用PubsubIO的Java OutOfMemoryError,google-cloud-dataflow,google-cloud-pubsub,Google Cloud Dataflow,Google Cloud Pubsub,我正在用Java编写一个简单的数据流管道: PubsubIO->ConvertToTableRowDoFn->BigQueryIO 管道正在工作——数据按预期到达BigQuery——但我在数据流工作日志中看到OutOfMemoryErrors 我尝试过的一个实验是通过添加Thread.sleep(100)来降低ConvertToTableRowDoFn的速度。我原以为这会使BigQueryIO的批量变小,但令我惊讶的是,这会使OutOfMemoryErrors更频繁 这让我觉得PubsubIO中

我正在用Java编写一个简单的数据流管道: PubsubIO->ConvertToTableRowDoFn->BigQueryIO

管道正在工作——数据按预期到达BigQuery——但我在数据流工作日志中看到OutOfMemoryErrors

我尝试过的一个实验是通过添加Thread.sleep(100)来降低ConvertToTableRowDoFn的速度。我原以为这会使BigQueryIO的批量变小,但令我惊讶的是,这会使OutOfMemoryErrors更频繁


这让我觉得PubsubIO中的某些东西读取数据太快或缓冲太多。有没有关于如何调查这一点的提示,或者关于PubsubIO如何在Google数据流环境中进行缓冲的指针?

用文件触发记录计数=100000而不是500000重新编译beam,此后我们再也没有看到任何OOM

你必须向我们展示一些代码才能得到任何有意义的答案。事实证明,是BigQueryIO占用了太多的内存。我们重新编译了beam,文件\u触发\u记录\u计数=100000,而不是500000,此后我们再也没有看到任何OOM。我希望这在将来的版本中成为用户可设置的。你可以盯着它看,以说明它的重要性,也可以收到有关这方面的任何更新。