从Dataflow写入BigQuery - 作业完成后不会删除JSON文件

Gra*_*ley 6 google-cloud-dataflow

我们的一个Dataflow作业将其输出写入BigQuery.我对如何在幕后实现这一点的理解是,Dataflow实际上将结果(分片)以JSON格式写入GCS,然后启动BigQuery加载作业以导入该数据.

但是,我们注意到,在作业完成后,无论是成功还是失败,都不会删除某些JSON文件.错误消息中没有警告或建议不会删除文件.当我们注意到这一点时,我们看了一下我们的存储桶,它有几百个来自失败作业的大型JSON文件(主要是在开发期间).

我原以为Dataflow应该处理任何清理,即使作业失败,当它成功时,肯定会删除这些文件.在作业完成后留下这些文件会产生大量的存储成本!

这是一个错误吗?

作业的示例作业ID"成功"但在GCS中留下了数百个大文件:2015-05-27_18_21_21-8377993823053896089

在此输入图像描述

在此输入图像描述

在此输入图像描述

Gra*_*ley 5

因为这仍然在发生,我们决定在管道完成执行后我们自己清理.我们运行以下命令来删除不是JAR或ZIP的所有内容:

gsutil ls -p <project_id> gs://<bucket> | grep -v '[zip|jar]$' | xargs -n 1 gsutil -m rm -r
Run Code Online (Sandbox Code Playgroud)


小智 5

遗留文件的另一个可能原因是取消了作业.目前,数据流不会从已取消的作业中删除文件.在其他情况下,应清理文件.

此外,第一篇文章"无法删除临时文件"中列出的错误是我们方面的日志记录问题的结果,应该在一两周内解决.在此之前,请随意忽略这些错误,因为它们不会指示遗留文件.