How to create a Dataproc cluster with time to live using Python SDK(如何使用Python SDK创建具有生存时间的Dataproc集群)
问题描述
我尝试使用python SDK创建一个生存时间为1天的Dataproc集群。为此,Dataproc API的v1beta2引入了LifecycleConfig object,它是ClusterConfig对象的子级。
我在JSON文件中使用此对象,并将其传递给create_cluster
方法。要设置特定的TTL,我使用了值为86,400秒(一天)的字段auto_delete_ttl
。
The documentation of Google Protocol Buffers is rather specific关于如何在JSON文件中表示时长:时长以字符串表示,后缀为s,表示秒数为0、3、6、9小数秒:
但是,如果我使用此格式传递持续时间,则会收到错误:
MergeFrom()的参数必须是同一类的实例:应为google.protocol buf.Duration get str
我是这样创建群集的:
from google.cloud import dataproc_v1beta2
project = "your_project_id"
region = "europe-west4"
cluster = "" #see below for cluster JSON file
client = dataproc_v1beta2.ClusterControllerClient(client_options={
'api_endpoint': '{}-dataproc.googleapis.com:443'.format(region)
})
# Create the cluster
operation = client.create_cluster(project, region, cluster)
变量cluster保存描述所需群集的JSON对象:
{
"cluster_name":"my_cluster",
"config":{
"config_bucket":"my_conf_bucket",
"gce_cluster_config":{
"zone_uri":"europe-west4-a",
"metadata":{
"PIP_PACKAGES":"google-cloud-storage google-cloud-bigquery"
},
"subnetwork_uri":"my subnet",
"service_account_scopes":[
"https://www.googleapis.com/auth/cloud-platform"
],
"tags":[
"some tags"
]
},
"master_config":{
"num_instances":1,
"machine_type_uri":"n1-highmem-4",
"disk_config":{
"boot_disk_type":"pd-standard",
"boot_disk_size_gb":200,
"num_local_ssds":0
},
"accelerators":[
]
},
"software_config":{
"image_version":"1.4-debian9",
"properties":{
"dataproc:dataproc.allow.zero.workers":"true",
"yarn:yarn.log-aggregation-enable":"true",
"dataproc:dataproc.logging.stackdriver.job.driver.enable":"true",
"dataproc:dataproc.logging.stackdriver.enable":"true",
"dataproc:jobs.file-backed-output.enable":"true"
},
"optional_components":[
]
},
"lifecycle_config":{
"auto_delete_ttl":"86400s"
},
"initialization_actions":[
{
"executable_file":"gs://some-init-script"
}
]
},
"project_id":"project_id"
}
我正在使用的包版本:
- google-cloud-dataproc:0.6.1
- 协议缓冲区:3.11.3
- googleapis-common-pros:1.6.0
我是不是做错了什么,是程序包版本错误的问题,还是错误?
推荐答案
当您以文本格式(即JSON等)构造Protobuf时,Duration类型应该使用100s
格式,但是您使用的是Python对象来构造接口请求Body,所以您需要创建Duration object而不是字符串:
duration_message.FromSeconds(86400)
这篇关于如何使用Python SDK创建具有生存时间的Dataproc集群的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何使用Python SDK创建具有生存时间的Dataproc集群
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- 沿轴计算直方图 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01