如何基于预览版创建自定义 dataproc 映像

How to create a custom dataproc image based on a preview release

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

如果我将以下其中一项指定为 --dataproc-version

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

如果我将以下其中一项指定为 --dataproc-version

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

因此问题是,我们能否基于预览版构建自定义 Dataproc 映像?如果是这样,我应该如何指定 --dataproc-version?

非常感谢

使用 CLI 时出现以下错误:

ERROR: (gcloud.dataproc.clusters.create) INVALID_ARGUMENT: Failed to resolve image version '1.4'. Accepted image versions: [0.1, 0.2, 1.0, 1.0-deb9, 1.1, 1.1-deb9, 1.2, 1.2-deb9, 1.3, 1.3-deb9, preview]. See https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions for additional information on image versioning.

所以,如果我使用 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

select 的一种可能方法是将 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 ...

根据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

中的正则表达式

更新:我已向 dataproc cumstom 图像发送拉取请求

感谢您报告并解决此问题!请注意,根据 this.

,python 版本在最新的映像版本中从 3.7 更改为 3.6