批处理数据流作业处理完所有数据后,是否可以执行操作?具体来说,我想将刚刚处理的管道文本文件移动到不同的GCS存储桶。我不知道在我的管道中将它放在哪里以确保在数据处理完成后执行一次。
答案 0 :(得分:3)
我不明白为什么你需要在管道执行后做这个。您可以使用侧输出将文件写入多个存储桶,并在管道完成后自行保存副本。
如果这对你不起作用(无论出于何种原因),那么你可以简单地以blocking execution模式运行你的管道,即使用pipeline.run().waitUntilFinish()
,然后只需编写其余的代码(在那之后复制)。
[..]
/do some stuff before the pipeline runs
Pipeline pipeline = ...
pipeline.run().waitUntilFinish();
//do something after the pipeline finishes here
[..]
答案 1 :(得分:-1)
我认为有两个选项可以帮到你:
1)使用TextIO写入您想要的存储分区或文件夹,指定确切的GCS路径(例如gs:// sandbox / other-bucket)
2)将Object Change Notifications与Cloud Functions结合使用。您可以在JS here中找到关于执行此here和GCS SDK的良好入门。您将在此选项中执行的操作基本上是在某个存储桶中出现问题时设置触发器,并使用您自行编写的云功能将其移动到另一个存储区。