如何在Talend Open Studio中记录任务进度?

Bax*_*Bax 5 talend

我有一些将数据从一个数据库迁移到另一个数据库的示例作业,我希望获得有关当前进度的一些信息,例如从应用程序本身交互运行作业时的那些(我从命令行导出并运行它) ).我使用flowMeter和statsCatcher,但我得到的是整个时间和传递的记录总数(例如4657秒,50.000.000行).有没有解决方案来获得一个像样的日志?

Gab*_*e B 5

您的解决方案是将条件子句添加到日志记录中.每一个真正的一行,比方说50000.使用序列的这个条件应该有效:

Numeric.sequence("log_seq",1,1) % 50000 == 0 
Run Code Online (Sandbox Code Playgroud)

您可以使用自定义组件bcLogBack基本上使用sl4j facade堆栈输出日志.该组件有一个名为"条件记录"的选项,仅在条件评估为true时才发送消息.

或者,如果您不喜欢安装自定义组件的想法,则可以使用标准tLogRow(或tWarn,tDie或其他)来结束您的subjob,前缀为tFilter,其表达式与高级条件相同.这样你就可以让流通过(并触发日志消息),每50000只一次.这是一个非常基本的工作图

//---->tMySqlOutput--->tFilter-----//filter--->tWarn (or tLogRow)
Run Code Online (Sandbox Code Playgroud)


Jea*_*cia 3

据我所知,tLogRow输出到控制台。因此您可以轻松地将输出插入其中。

如果tLogRow还不够,您可以将输出插入组件TJavaFlex。在那里您可以使用 log4j 或任何自定义输出之类的东西。

您也可以用作tFileDelimitedOutput日志文件。该组件有一个很好的“附加”选项,对于该用例来说就像一个魅力。


针对您的上述问题:如何获取日志信息

根据经验,我可以看出某些组件输出流。例如,tMysqlInput输出成功插入的行。

通常,为了记录信息,我使用tReplicate允许我将流的副本输出到日志文件的组件。

 tMySqlOutput ---- tReplicate ----- tMap -------- tMySqlInput (insert in DB)
                              +---- tMap -------- tDelimitedFile (log info)
Run Code Online (Sandbox Code Playgroud)