运行管道后不返回结果响应(结果为失败)



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对象。

相关内容

  • 没有找到相关文章