不要 return 运行 管道后的结果响应(结果失败)
don't return the result response after running pipeline (result is fail)
1) 当管道 运行 结果成功并完成时,我捕获响应 (DONE)。并在控制台上打印 "Pipiline running result = DONE"。
2) 当管道 运行 结果失败时,我没有捕捉到响应 (FAILED),它只是完成了。它不打印 "Pipiline running result = FAILED"。我不能进行下一步。我试过使用 try/catch
,但它没有捕捉到 'PipelineExecutionException'。
pipeline
.apply(TextIO.Read.from(Path).named("TextIO.Read(" + Path + ")"))
.apply(new MyTransforms());
try{
PipelineResult result = pipeline.run();
LOG.info(" Pipiline running result = " + result.getState().toString());
if (result.getState() != PipelineResult.State.DONE) {
// i will send e-mail
}
}
catch(PipelineExecutionException e){
LOG.error(e.getMessage());
}
失败的原因是"path(gcs) is empty"。
我想获得失败结果响应。
首先,确保您使用的是 BlockingDataflowPipelineRunner。否则,您的代码将在作业提交后终止。
使用 BlockingDataflowPipelineRunner,您应该捕捉 DataflowJobExecutionException 来处理意外失败,捕捉 DataflowJobCancelledException 来处理取消,或者捕捉超类 DataflowJobException 来处理所有可能的非成功终止。
只有在作业成功时才会返回 PipelineResult。如果您想在失败的情况下查询作业的属性,例如状态或聚合器,您可以从使用 DataflowJobException#getJob() 捕获的异常中访问 DataflowPipelineJob 对象。
1) 当管道 运行 结果成功并完成时,我捕获响应 (DONE)。并在控制台上打印 "Pipiline running result = DONE"。
2) 当管道 运行 结果失败时,我没有捕捉到响应 (FAILED),它只是完成了。它不打印 "Pipiline running result = FAILED"。我不能进行下一步。我试过使用 try/catch
,但它没有捕捉到 'PipelineExecutionException'。
pipeline
.apply(TextIO.Read.from(Path).named("TextIO.Read(" + Path + ")"))
.apply(new MyTransforms());
try{
PipelineResult result = pipeline.run();
LOG.info(" Pipiline running result = " + result.getState().toString());
if (result.getState() != PipelineResult.State.DONE) {
// i will send e-mail
}
}
catch(PipelineExecutionException e){
LOG.error(e.getMessage());
}
失败的原因是"path(gcs) is empty"。 我想获得失败结果响应。
首先,确保您使用的是 BlockingDataflowPipelineRunner。否则,您的代码将在作业提交后终止。
使用 BlockingDataflowPipelineRunner,您应该捕捉 DataflowJobExecutionException 来处理意外失败,捕捉 DataflowJobCancelledException 来处理取消,或者捕捉超类 DataflowJobException 来处理所有可能的非成功终止。
只有在作业成功时才会返回 PipelineResult。如果您想在失败的情况下查询作业的属性,例如状态或聚合器,您可以从使用 DataflowJobException#getJob() 捕获的异常中访问 DataflowPipelineJob 对象。