我试图在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
?
非常感谢
答案 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中更改正则表达式
更新:我已经向dataproc cumstom图片发送了拉取请求
答案 1 :(得分: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 ...
答案 2 :(得分:0)
感谢您报告并解决此问题!请注意,根据this,最新图像发行版中python版本从3.7更改为3.6。