如何基于预览版本创建自定义数据图像

问题描述 投票:0回答:3

我试图在GCP中创建自定义Dataproc图像。它适用于稳定版本的基本图像(例如1.3.24)。但是,如果我指定一个预览的基本图像(例如1.4.0),我收到以下错误消息:

如果我指定以下之一作为--dataproc-version

  • 1.4.0-deb9
  • 1.4.0
  • 1.4

我得到RuntimeError: ('Cannot find dataproc base image with dataproc-version=%s.', '<the specified version>')

如果我指定以下之一作为--dataproc-version

  • 1.4.0-RC8
  • 1.4.0-RC8-deb9

我得到generate_custom_image.py: error: argument --dataproc-version: Invalid version: <the specified version>.

因此问题是,我们可以根据预览版本构建自定义Dataproc图像吗?如果是这样,我应该如何指定--dataproc-version

非常感谢

google-cloud-platform google-cloud-dataproc
3个回答
2
投票

使用CLI时,我收到以下错误:

错误:(gcloud.dataproc.clusters.create)INVALID_ARGUMENT:无法解析图像版本“1.4”。接受的图像版本:[0.1,0.2,1.0,1.0-deb9,1.1,1.1-deb9,1.2,1.2-deb9,1.3,1.3-deb9,预览]。有关图像版本控制的其他信息,请参阅https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions

所以,如果我使用preview它可以工作并用1.4.0-RC10-deb9创建一个:

gcloud dataproc clusters create cluster-name --image-version preview

编辑:关于自定义图像

在检查脚本执行的操作后,它使用this filter检索图像。如果我们只列出所有这些,我们可以看到可用的,例如:

$ gcloud compute images list --project cloud-dataproc
...
dataproc-1-4-deb9-20190213-000000-rc01                cloud-dataproc                                                   READY

选择那一个的一种可能方法是用以下代码替换generate_custom_image.py的第122-123行:

filter_arg = "--filter=name:dataproc-1-4-deb9-20190213-000000-rc01"

并使用虚拟版本为正则表达式调用脚本:

python generate_custom_image.py --dataproc-version 1.2.0 ...

3
投票

根据generate_custom_image.py的源代码

47 # Old style images: 1.2.3
48 # New style images: 1.2.3-deb8
49 _VERSION_REGEX = re.compile(r"^\d+\.\d+\.\d+(-.{4})?$")

只有1.4.0-deb9才能匹配正则表达式,但1.4.0-RC10-deb9不匹配。

如果要使用预览版,则需要在generate_custom_image.py中更改正则表达式

更新:我已将pull请求发送到dataproc自定义映像


0
投票

感谢您报告并解决此问题!请注意,根据this,python版本在最新的图像版本中从3.7更改为3.6。

© www.soinside.com 2019 - 2024. All rights reserved.