2016-09-13 54 views

回答

4

在很多时候,这种行为与HDFS非常相似,在飞行中读取会很好,你会很幸运,他们会运行到正确完成。这是因为大部分时间Dataproc使用的GoogleCloudStorageReadChannel在读取的整个持续时间内都会有一个无限范围的流,在删除文件的元数据后至少会暂时存在。

但是,如果该文件在技术上已被删除,并且即使预计单个流将运行至完成,也不能保证此流将运行至完成,即使单个流预计运行至完成,临时错误也可能导致通道保持失败如果该文件已被删除。对于更新,如果您使用严格更多的数据重写单个文件(例如,通过重写整个文件而不改变文件的第一部分的内容来模拟附加),那么行为应该是正确的,在通道第一次打开时读取文件的大小,因为Hadoop的拆分计算应该会导致工作人员只读取该限制,即使文件被作业中的较大文件替换。

+0

@ denis-huo我有一个类似的情况,没有HDFS,在Golang中使用云存储API。我很好奇当一个进程正在读取的对象被另一个进程覆盖时会发生什么,读者会发生什么?我找不到任何关于它的文档,但我确定Google有人想到它。 –