使用Dataproc中的Google云端存储找不到间歇性文件 - 正在刷新写入内容?

时间:2016-09-08 17:41:38

标签: google-cloud-storage google-cloud-dataproc

我有一系列数据操作工作,每天早上都会输入一些数据。该过程创建一个集群,按顺序运行四个作业,然后关闭集群。输入文件从Google云端存储中读取,中间结果也以Avro格式保存在GCS中,最终输出将转至Cloud SQL。

通常情况下,这些工作将无法尝试阅读上一份工作所写的Avro。似乎GCS没有赶上"并且之前工作的结果已经完全写好了。我试图阅读看起来是前一天运行的文件时遇到了失败,并且这些文件的中途将消失并被新的文件替换。我已经更改了运行文件的脚本以在开始作业之前清除工作区域,但仍有问题,有时它开始阅读并且所有部分都没有完全写入。

我可以将代码更改为简单地将中间文件存储在群集上,因为我喜欢在外面将它们用于诊断其他问题。我也可以只使用群集写入两个位置进行工作,使用GCS进行诊断。

但假设这是某种同步问题,是否有办法强制GCS刷新写入/在作业之间完全同步?或者是否有一些检查可以确保在我的链中开始下一个工作之前已经写好了所有内容?

编辑:要回答下面的评论,作业序列全部在同一个集群上运行。启动集群,每个作业依次在该集群上运行,然后关闭集群。

目前,除了GCS之外,我还通过将作业写入群集上的HDFS以及从群集中读取的后续作业来解决这个问题。现在,GCS输出严格用于诊断以防出现问题。但即使是我的直接问题(我相信)已经解决了,我仍然想知道发生了什么以及为什么GCS似乎有点不同步。

0 个答案:

没有答案