当 dataproc 作业读取 gcs 上的文件时发生更改会发生什么?

What happens when a file on gcs is changed while being read by a dataproc job?

当使用 GCS 作为 hdfs 时,dataproc 作业可以继续 运行 (as it does with native hdfs),当它正在读取的 GCS 文件被 updated/temporarily 删除时?

我也可以 运行 进行一些测试,但只是想知道是否有人知道。

该行为在很多时候与 HDFS 非常相似,飞行中的读取会很好,您会很幸运,它们会 运行 正确完成。这是因为大多数情况下,Dataproc 使用的 GoogleCloudStorageReadChannel 在整个读取过程中都会有一个无限范围的流,该流至少会在文件的元数据被删除后暂时存在。

但是,如果文件在技术上已被删除,则无法保证此流会 运行 完成,即使预计单个流会 运行 完成,临时错误也可能导致频道attempt explicit low-level retries 如果文件已被删除,这肯定会失败。

至于更新,如果您使用更多数据重写单个文件(例如,通过重写整个文件而不更改文件第一部分的内容来模拟追加),行为应该是正确,读取通道首次打开时的文件大小,因为 Hadoop 的拆分计算应该导致工作人员只能读取该限制,即使文件在作业中间被更大的文件替换也是如此。