1)当运行结果的管道成功并完成时,我捕获响应(done)。并在控制台上打印" pipeline running result = DONE"。
2)当运行结果的管道失败时,我不会捕获响应(failed),它只是结束。它不会打印"pipeline 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,你应该捕获dataflowjobeexecutionexception来处理意外的失败,DataflowJobCancelledException来处理取消,或者超类DataflowJobException来处理所有可能的不成功终止。
只在作业成功时返回PipelineResult。如果您想在失败的情况下查询作业的属性,例如状态或聚合器,您可以从使用DataflowJobException#getJob()捕获的异常中访问DataflowPipelineJob对象。