考虑来自用户的总最大记录并根据 apache beam 中的批处理大小进行处理

Considering total max records from the user and processing it based on the batch size in apache beam

我正在尝试根据用户应提供的要处理的最大记录总数从源中读取记录。

例如:源中的总记录 table 是 100 万条 要处理的总最大记录数为 100K

我只需要从源头处理那 10 万条记录。 我已经通过 JDBC IO 库 类 来检查我是否有任何选项来实现它,就像有一个选项可以设置批量大小一样,但我发现 none.

PS:我想实现IO级别,不是通过给query加limit

您可以使用 withQuery 来指定要读取的记录数的查询,例如.withQuery("select id,name from Person limit 1000")。您还可以使用 JdbcIO.StatementPreparator. The example in the doc may help 参数化记录数。

编辑 另一种选择是使用 withFetchSize

我可以通过关闭 JDBC IO

的自动提交来使用 setMaxRows 来做到这一点