TextIO.Write - 是否附加或替换输出文件(Google Cloud Dataflow)

时间:2015-05-30 21:13:45

标签: google-cloud-dataflow

我找不到任何关于它的文档,所以我想知道如果输出文件已经存在(在gs:// bucket中)会有什么行为?

谢谢, ģ

1 个答案:

答案 0 :(得分:6)

文件将被覆盖。这有几个动机:

  • “报告式”用例(计算输入数据的摘要并将结果放在GCS上)似乎比用于逐步生成数据并将更多数据放在GCS上的用例更频繁每次执行管道。
  • 如果重新运行管道是幂等的(-ish?),这是好的。例如。如果你在管道中发现了一个错误,你可以修复它并重新运行它,并享受覆盖正确的结果。在这个问题上,附加到文件的管道很难处理。
  • 不需要为TextIO.Write指定输出分片数;它可以在不同的执行之间略有不同,即使对于完全相同的管道和相同的输入数据也是如此。在这种情况下附加的语义会非常混乱。
  • 据我所知,追加是不可能使用我所知道的任何文件系统有效地实现,同时保留原子性和容错保证(例如,你产生所有输出或不产生任何输出,即使面对由于失败而捆绑重新执行。)

此行为将记录在github上显示的下一版SDK中。