在GCP中,从UI或gcloud命令安装并运行JupyterHub component非常简单。我正在尝试通过Airflow和DataprocClusterCreateOperator编写进程脚本,这里是DAG的摘录
from airflow.contrib.operators import dataproc_operator
create_cluster=dataproc_operator.DataprocClusterCreateOperator(
task_id='create-' + CLUSTER_NAME,
cluster_name=CLUSTER_NAME,
project_id=PROJECT_ID,
num_workers=3,
num_masters=1,
master_machine_type='n1-standard-2',
worker_machine_type='n1-standard-2',
master_disk_size=100,
worker_disk_size=100,
storage_bucket='test-dataproc-jupyter',
region='europe-west4',
zone='europe-west4-a',
auto_delete_ttl=21600,
optional_components=['JUPYTER', 'ANACONDA']
)
但是我无法指定所需的enable-component-gateway
参数。查看源代码,似乎参数不是必需的(在deprecated或last stable运算符中)。
我知道REST API提供了endpointConfig.enableHttpPortAccess
,但我宁愿使用正式的运算符。有谁知道如何实现这一目标?
虽然不是最佳选择,但是您可以自己创建Cluster数据结构,而不用让Airflow的ClusterGenerator来完成。它应该适用于最新版本(1.10.7)
cluster = {
'clusterName': CLUSTER_NAME,
'config': {
'gceClusterConfig': {
'zoneUri': 'europe-west4-a'
},
'masterConfig': {
'numInstances': 1,
'machineTypeUri': 'n1-standard-2',
'diskConfig': {
'bootDiskSizeGb': 100
},
},
'workerConfig': {
'numInstances': 3,
'machineTypeUri': 'n1-standard-2',
'diskConfig': {
'bootDiskSizeGb': 100
},
},
'softwareConfig': {
'optionalComponents': [
'ANACONDA',
'JUPYTER'
]
},
'lifestyleConfig': {
'autoDeleteTtl': 21600
},
'endpointConfig': {
'enableHttpPortAccess': True
}
},
'projectId': PROJECT_ID
}
#Start DataProc Cluster
dataproc_cluster = DataprocClusterCreateOperator(
task_id='create-' + CLUSTER_NAME,
project_id=PROJECT_ID,
num_workers=3,
region='europe-west4',
zone='europe-west4-a',
cluster = cluster,
dag=DAG
)
如果您使用的是其他Airflow版本,请指定。
您也可以投票给我打开的错误:AIRFLOW-6432