TextIO.写-它是否追加或替换输出文件(谷歌云数据流)



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

谢谢,G

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

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

此行为将在github上出现的下一个SDK版本中记录。

最新更新