我有一些示例作业可以将数据从一个数据库迁移到另一个数据库,我想了解一些有关当前进度的信息,例如从应用程序本身交互式运行作业时的信息(我从命令行导出并运行它) )。
我使用 flowMeter 和 statsCatcher 但我得到的一切都是总时间和通过的记录总数(例如 4657 秒,50.000.000 行)。
有没有办法得到一个像样的日志?
最佳答案
您的解决方案是向日志记录添加条件子句。每一行都是真的,比方说,50000。这个使用序列的条件应该有效:
Numeric.sequence("log_seq",1,1) % 50000 == 0
您可以使用自定义组件 bcLogBack基本上使用 sl4j 外观堆栈输出您的日志。该组件有一个名为“条件日志记录”的选项,仅当条件评估为真时才发送消息。
或者,如果您不喜欢安装自定义组件的想法,您可以使用标准 tLogRow(或 tWarn、tDie 或其他)以带有与高级条件相同的表达式作为前缀的 tFilter 来结束您的子作业。通过这种方式,您将每 50000 次让流通过(以及要触发的日志消息)一次。 这是一个非常基本的工作图
//---->tMySqlOutput--->tFilter-----//filter--->tWarn (or tLogRow)
关于talend - 如何在 Talend Open Studio 中记录任务进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17149740/