【问题标题】:TextIO.Write - does it append to or replace the output files (Google Cloud Dataflow)TextIO.Write - 它是追加还是替换输出文件(谷歌云数据流)
【发布时间】:2015-05-30 21:13:45
【问题描述】:

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

谢谢, G

【问题讨论】:

    标签: google-cloud-dataflow


    【解决方案1】:

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

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

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

    【讨论】:

    • 这仍然是正确的@jkff 吗?我很确定它们只有在共享相同数量的分片时才会被覆盖。否则文件名不同并保留旧文件
    • 是的,感谢您的澄清。如果生成的文件与现有文件冲突,现有文件将被覆盖,否则现有文件将保持不变。
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多