如何在谷歌数据流管道中设置diskSourceImage

时间:2015-10-14 15:35:28

标签: google-cloud-platform google-cloud-dataflow

我一直在尝试使用自定义图片来运行我的谷歌数据流管道。根据{{​​3}}的信息,我测试了以下代码片段:

DataflowPipelineOptions options = PipelineOptionsFactory.create().as(DataflowPipelineOptions.class);
...
options.setDiskSourceImage("ubuntu-1504-vivid-v20150911");
options.setDiskSourceImage("projects/ubuntu-os-cloud/global/images/ubuntu-1504-vivid-v20150911");
options.setDiskSourceImage("https://www.googleapis.com/compute/beta/projects/ubuntu-os-cloud/global/images/ubuntu-1504-vivid-v20150911");

以上所有尝试都导致我的管道中出现以下错误:

  

(b9c7b66a676906f4):无法创建虚拟机。原因:(b9c7b66a67690aef):错误:消息:字段'resource.disks [0] .initializeParams.sourceImage'的值无效:'[编辑]'。必须是具有正确类型HTTP代码的计算资源的URL:400

2 个答案:

答案 0 :(得分:1)

将自定义磁盘映像与Dataflow一起使用不是一个可行的选择。标记diskSourceImage已弃用,将在以后的SDK版本中删除。不再支持它的原因是因为Dataflow服务依赖于VM映像中的版本化资源。因此,Dataflow需要控制VM映像,以便我们可以根据需要进行升级。如果用户提供自己的自定义映像,我们无法使它们与Dataflow服务的要求保持同步。

如果您的自定义VM映像基于Dataflow映像,那么您将能够使用该自定义映像执行作业,直到下一版本的Dataflow VM映像。没有合理的方法可以使您的自定义图像与Dataflow的VM映像保持同步,以便您能够保持此工作。

如果您想自定义虚拟机映像,请告诉我们原因(例如发送电子邮件至dataflow-feedback@google.com),以便我们建议替代解决方案,或者考虑将来支持您的用例

答案 1 :(得分:0)

setDiskSourceImage存在一个微妙的问题 - 它使用了' beta'而不是当前的' v1'计算引擎的版本。如果你尝试以下,它应该工作:

options.setDiskSourceImage("https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-1504-vivid-v20150911");