应对 GCS Bucket Listing 的最终一致性
Coping with eventual consistency of GCS Bucket Listing
我们的数据流作业从包含感兴趣文件的 GCS 多区域存储桶中读取。这些文件也被移动到存档桶中,因此有时我们会看到 GCS 列表操作 return 已移动的文件(正如您所期望的那样,因为它是最终一致的操作)。
不幸的是,当 FileBasedSource
试图读取这些 "ghost" 文件时,我们的工作失败了。 Google 的 Dataflow SDK 和 Apache Beam 似乎都已将打开 GCS 文件的方法设为最终方法(在 FileBasedSource
中:createReader
和 startImpl
),因此我们无法覆盖他们。
除了不移动文件外,还有解决此问题的建议吗? Stack Overflow question 表明其他人遇到了类似的问题,但似乎响应是 "blowing up as expected"。
现在,Google Cloud Storage 对象列表操作是 strongly consistent,所以原来的问题不再适用。
它仍然适用于使用最终一致的文件系统(例如 S3)。请参阅 BEAM JIRA 以跟踪此问题。
我们的数据流作业从包含感兴趣文件的 GCS 多区域存储桶中读取。这些文件也被移动到存档桶中,因此有时我们会看到 GCS 列表操作 return 已移动的文件(正如您所期望的那样,因为它是最终一致的操作)。
不幸的是,当 FileBasedSource
试图读取这些 "ghost" 文件时,我们的工作失败了。 Google 的 Dataflow SDK 和 Apache Beam 似乎都已将打开 GCS 文件的方法设为最终方法(在 FileBasedSource
中:createReader
和 startImpl
),因此我们无法覆盖他们。
除了不移动文件外,还有解决此问题的建议吗? Stack Overflow question 表明其他人遇到了类似的问题,但似乎响应是 "blowing up as expected"。
现在,Google Cloud Storage 对象列表操作是 strongly consistent,所以原来的问题不再适用。
它仍然适用于使用最终一致的文件系统(例如 S3)。请参阅 BEAM JIRA 以跟踪此问题。