当输入PCollection为空时,如何跳过在Apache Beam中创建输出文件



在我的Apache Beam管道中,我的集合可能是空的(它包含处理过程中的错误,可能没有错误(。

我用那些错误的项目创建了errors.csv文件。如果没有错误,我希望跳过创建该文件。但目前ApacheBeam创建文件(只有标题行(,即使带有错误的输入PCollection为空。

我的代码

TextIO.Write errorsWrite= TextIO.write()
.withHeader(..)
.to(..)
PCollection<ErrorItems> errors=...
errors.apply("write errors to file",errorsWrite)

除了在一个不推荐使用的方法的注释中,似乎没有任何地方记录这一点,这意味着为空的PCollection创建一个空文件是预期行为。

对于这种情况,最合理的解决方法是添加额外的代码(可能是在收到PipelineResult之后(来读取errors.csv,查看其中是否有除头文件之外的任何项目,如果没有,则删除该文件。

最新更新