如何基于预览版创建自定义 dataproc 映像
How to create a custom dataproc image based on a preview release
我试图在 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
?
非常感谢
使用 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 ...
的源码
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
我试图在 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
?
非常感谢
使用 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 ...
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