Pentaho 数据集成:错误处理

Posted

技术标签:

【中文标题】Pentaho 数据集成:错误处理【英文标题】:Pentaho Data Integration: Error Handling 【发布时间】:2016-04-19 23:32:24 【问题描述】:

我正在使用 Pentaho 数据集成 (CE) 构建一个 ETL 流程,并且我正在尝试实施我的转换和作业,以便能够对其进行监控。具体来说,我希望能够捕获任何错误,然后将它们发送到错误报告服务,如 Honeybadger 或 New Relic。我了解如何进行行级错误报告,但我没有找到一种方法来完成工作或事务故障报告

这是一个示例作业。

向下路径是转换成功但有行错误的地方。在那里,我们可以过滤结果并记录它们。 向右的路径是转换失败的情况(例如,数据库凭据错误)。这就是我遇到问题的地方:我不知道如何获取要发送的错误信息。

如何捕获要记录的转换失败?

【问题讨论】:

【参考方案1】:

您无法在作业本身内捕获作业级错误详细信息。 但是,还有其他监控选项。

第一个选项是为转换或作业使用数据库日志记录(请参阅作业/trans 参数对话框中的“日志”选项卡) - 这样您始终可以获得有关执行状态的最新信息,因此您可以说,编写一个定期扫描日志数据库并将错误报告发送到您需要的地方的作业。

同时,这个选项对于开发和支持来说似乎是相当重要的,而且对于进一步的修改来说不太灵活。因此,在我们公司,我们最终对作业执行级别进行了监控 - 即,当您使用 kitchen.bat 运行作业并且由于任何原因失败时,您会收到厨房执行的“错误”状态,因此您可以轻松检查它并使用您想要的任何工具执行必要的操作 - .bat 命令、PowerShell 或(在我们的例子中)Jenkins CI。

【讨论】:

感谢您的指点。这也是我要得出的结论。【参考方案2】:

您可以在 Modified Java Script 步骤中使用 writeToLog("e", "Message") 函数。

文档:

// Writes a string to the defined Kettle Log.
//
// Usage:
// writeToLog(var);
// 1: String - The Message which should be written to
// the Kettle Debug Log
//
// writeToLog(var,var);
// 1: String - The Type of the Log
// d - Debug
// l - Detailed
// e - Error
// m - Minimal
// r - RowLevel
//
// 2: String - The Message which should be written to
// the Kettle Log

【讨论】:

以上是关于Pentaho 数据集成:错误处理的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho 中的 Hive 数据集成错误

Pentaho Kettle insert 步骤的错误处理

Pentaho 数据集成输入/输出位类型错误

Pentaho 通用错误处理脚本

ORA-00001 / TOP001 - Pentaho 错误处理

Pentaho 数据集成,插入/更新步骤即使在发现一些错误后仍继续