我遇到了同样的问题而没有一个好的通用解决方案 -
场景是:
问题是运行单个线程来读取单个选择/连接中的所有X百万行总是遇到问题。所以我希望Pentaho让我说多次选择并按“批处理”处理100K或500K行并继续处理,直到没有更多的行。
我可以硬编码一个简单的脚本来运行pan.sh,其中包含一个起始行和批量大小的命名参数 - 这很有效但我必须预先计算脚本步骤和实际的起始行号。
理想情况下,我希望Pentaho可以在Table Input步骤中设置“Number of Copies”和批量大小,这样它就会自动化!
是否有人拥有获取表的行计数的示例作业定义 - 然后“循环”对转换的调用,直到处理完所有行为止?也许一些批次可以并行运行以获得额外的信用。
答案 0 :(得分:1)
是;这样做的方法确实是使用多个副本,然后使用步骤和mod函数的“数字”。
因此;如果您有2个副本,如果您说:
where rownum % 2 = 0
在查询中然后你将拉出每一秒。
rownum可以是ID或其他一些数字列 - 当然需要是均匀分布的ID。如果索引也有帮助 - 如果它是底层数据库分区的一部分,则会特别好。
此方法也适用于慢速网络连接 - 允许您加载与数据库的多个连接。
Doco在这个jira中使用的变量:
http://jira.pentaho.com/browse/PDI-3253
如果您希望保持“分区”向下游流动,那么它就是您的选择。