【问题标题】:Adding logs of jobs into a database with Talend使用 Talend 将作业日志添加到数据库中
【发布时间】:2017-02-03 12:53:55
【问题描述】:

我正在尝试将运行的作业的所有日志导入 Postgres 中的一个表中。我正在使用组件 tLogCatcher 和 tStatCatcher 并将它们连接起来以创建一个包含所有可用数据的表。

这份工作是这样的:

在 tMap 中,我将 logcatcher 和 statcatcher 的两个源加入到 pid 和作业名称上,并尝试合并结果以将它们组合在一个表中:

但是,每当作业失败时,即使有错误消息,我也会在 logcatcher 输出中得到空值:

[statistics] connecting to socket on port 3696
[statistics] connected
2017-02-03 13:51:07|PR7710|PR7710|PR7710|6981|NASIA|Master_ETL_Job|_52dYEJUvEeaqS8phzVFskQ|0.1|Default||begin||
Exception in component tFileInputDelimited_1
java.io.FileNotFoundException: /Users/nasiantalla/Documents/keychain.csv (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at org.talend.fileprocess.TOSDelimitedReader.<init>(TOSDelimitedReader.java:88)
    at org.talend.fileprocess.FileInputDelimited.<init>(FileInputDelimited.java:164)
    at nasia.master_etl_job_0_1.Master_ETL_Job.tFileInputDelimited_1Process(Master_ETL_Job.java:796)
    at nasia.master_etl_job_0_1.Master_ETL_Job.runJobInTOS(Master_ETL_Job.java:6073)
    at nasia.master_etl_job_0_1.Master_ETL_Job.main(Master_ETL_Job.java:5879)
2017-02-03 13:51:08|PR7710|PR7710|PR7710|NASIA|Master_ETL_Job|Default|6|Java Exception|tFileInputDelimited_1|java.io.FileNotFoundException:/Users/nasiantalla/Documents/keychain.csv (No such file or directory)|1
2017-02-03 13:51:08|PR7710|PR7710|PR7710|6981|NASIA|Master_ETL_Job|_52dYEJUvEeaqS8phzVFskQ|0.1|Default||end|failure|890
[statistics] disconnected
Job Master_ETL_Job endet am 13:51 03/02/2017. [exit code=1]

在我的表格中,我得到的数据是这样的:

你有没有看到我可能错过的东西?我尝试在 tMap 中使用所有不同的连接,但它似乎不起作用,我不明白为什么..

提前致谢!

【问题讨论】:

    标签: postgresql talend


    【解决方案1】:

    tStatCatchertLogCatcher 在与 tMap 结合时不起作用。我无法给出一个明确的答案,但我认为这与“捕捉”错误和统计数据所涉及的特殊功能有关,并且可能是时间问题。例如,日志捕获器只会捕获错误,而统计信息可以捕获每个组件的统计信息。

    我建议写入单独的表格并加入这些表格以生成报告。事实上,Talend 已内置此功能,因此您甚至不需要在每个作业中提供自己的 tStatCatchertLogCatcher 组件。

    您必须首先创建 AMC 数据库结构,然后转到文件--> 编辑项目设置--> 作业设置--> 统计信息和日志。选择“在数据库上”选项。然后 Talend 会自动将统计信息、错误和流记录到 AMC 数据库。你可以举报这个db。

    【讨论】:

    • 哇,太棒了,我不知道 Talend 可以自动登录!非常感谢!!
    【解决方案2】:

    这是三个原因:

    • 如果没有tDietWarntLogCatcher 不提供日志,我认为这是您的情况。

    • tLogCatchertStatCatcher 不必同时提供它们的数据,因为它们是由不同的事件触发的。所以join不会匹配。

    • 从功能的角度来看,加入 2 个流程没有意义,它们是完全独立的。

    我建议您将这些流转储到不同的表中,这可以在不使用任何组件且无需开发的情况下隐式实现,请参阅here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      相关资源
      最近更新 更多