我试图在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时,我收到以下错误:
错误:(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 ...
根据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自定义映像
感谢您报告并解决此问题!请注意,根据this,python版本在最新的图像版本中从3.7更改为3.6。