Apache Beam / Google 数据流 - 错误处理

ben*_*n.d 5 java error-handling google-cloud-dataflow apache-beam

我有一个包含相当多步骤的管道(略高于 15)。每次DoFn失败时我都想报告失败。我开始TupleTags使用以下代码实现它:

try {
 ... do stuff ...
 c.output(successTag, ...);
} catch (Exception e) {
 c.output(failureTag, new Failure(...));
}
Run Code Online (Sandbox Code Playgroud)

但是由于我的管道包含很多步骤,这使得管道定义代码很难阅读/维护。

有没有更全球化的方式来实现它?类似于引发在管道级别全局处理的自定义异常?

Ale*_*ato 5

您正在做的是捕获错误并以不同方式输出它们的正确方法。不过,您在每一步都需要这个。如果您愿意,您可以使用 java 模式来重用它。为所有 ParDos 创建一个基类,并在 processElement 添加异常处理代码。然后在您在 processElement 中调用的单独函数(即 processElementImpl)中实现您的 processElement。