群集 API 2.0
利用群集 API,可以创建、启动、编辑、列出、终止和删除群集。 对群集 API 的请求的最大允许大小为 10MB。
群集生命周期方法需要从创建返回的群集 ID。 若要获取群集列表,请调用列表。
Azure Databricks 将群集节点实例类型映射到被称为 DBU 的计算单位。 有关受支持的实例类型及其对应 DBU 的列表,请参阅实例类型定价页。 有关实例提供程序的信息,请参阅 Azure 实例类型规范和定价。
Azure Databricks 在停止支持实例类型之前,始终会提供为期一年的弃用通知。
重要
要访问 Databricks REST API,必须进行身份验证。
创建
端点 | HTTP 方法 |
---|---|
2.0/clusters/create |
POST |
创建新的 Apache Spark 群集。 如果有必要,此方法会从云服务提供商处获取新实例。 此方法是异步的;返回的 cluster_id
可用于轮询群集状态。 在此方法返回时,群集处于 PENDING
状态。
群集在进入 RUNNING
状态后即可供使用。 请参阅 ClusterState。
注意
由于云服务提供商的限制或暂时性的网络问题,Azure Databricks 可能无法获取某些已请求的节点。 如果无法获取足够数量的已请求节点,群集创建将会终止,并显示一条信息性的错误消息。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/create \
--data @create-cluster.json
create-cluster.json
:
{
"cluster_name": "my-cluster",
"spark_version": "7.3.x-scala2.12",
"node_type_id": "Standard_D3_v2",
"spark_conf": {
"spark.speculation": true
},
"num_workers": 25
}
{ "cluster_id": "1234-567890-undid123" }
下面是一个自动缩放的群集的示例。 此群集最初将包含 2 个节点(最小值)。
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/create \
--data @create-cluster.json
create-cluster.json
:
{
"cluster_name": "autoscaling-cluster",
"spark_version": "7.3.x-scala2.12",
"node_type_id": "Standard_D3_v2",
"autoscale" : {
"min_workers": 2,
"max_workers": 50
}
}
{ "cluster_id": "1234-567890-hared123" }
此示例创建单节点群集。 若要创建单节点群集:
- 将
spark_conf
和custom_tags
设置为示例中的确切值。 - 将
num_workers
设置为0
。
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/create \
--data @create-cluster.json
create-cluster.json
:
{
"cluster_name": "single-node-cluster",
"spark_version": "7.6.x-scala2.12",
"node_type_id": "Standard_DS3_v2",
"num_workers": 0,
"spark_conf": {
"spark.databricks.cluster.profile": "singleNode",
"spark.master": "local[*]"
},
"custom_tags": {
"ResourceClass": "SingleNode"
}
}
{ "cluster_id": "1234-567890-pouch123" }
若要使用策略创建作业或提交新群集的运行,请将 policy_id
设置为策略 ID:
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/create \
--data @create-cluster.json
create-cluster.json
:
{
"num_workers": null,
"autoscale": {
"min_workers": 2,
"max_workers": 8
},
"cluster_name": "my-cluster",
"spark_version": "7.3.x-scala2.12",
"spark_conf": {},
"node_type_id": "Standard_D3_v2",
"custom_tags": {},
"spark_env_vars": {
"PYSPARK_PYTHON": "/databricks/python3/bin/python3"
},
"autotermination_minutes": 120,
"init_scripts": [],
"policy_id": "C65B864F02000008"
}
若要创建新群集,请在 new_cluster
中定义群集属性:
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/job/create \
--data @create-job.json
create-job.json
:
{
"run_name": "my spark task",
"new_cluster": {
"spark_version": "7.3.x-scala2.12",
"node_type_id": "Standard_D3_v2",
"num_workers": 10,
"policy_id": "ABCD000000000000"
},
"libraries": [
{
"jar": "dbfs:/my-jar.jar"
},
{
"maven": {
"coordinates": "org.jsoup:jsoup:1.7.2"
}
}
],
"spark_jar_task": {
"main_class_name": "com.databricks.ComputeModels"
}
}
群集定义的请求结构
字段名称 | 类型 | 描述 |
---|---|---|
num_workers 或 autoscale | INT32 或 INT32 |
如果是 num_workers,则此项为此群集应该具有的工作器节点数。 一个群集有一个 Spark 驱动程序和 num_workers 个执行程序用于总共 (num_workers + 1) 个 Spark 节点。 注意: 在读取群集的属性时,此字段反映的是所需的工作器数,而不是实际的工作器数。 例如,如果将群集的大小从 5 个工作器重设为 10 个工作器,此字段将会立即更新,以反映 10 个工作器的目标大小,而 executors 中列出的工作器将会随着新节点的预配,逐渐从 5 个增加到 10 个。如果是 autoscale,则会需要参数,以便根据负载自动纵向扩展或缩减群集。 |
cluster_name | STRING |
用户请求的群集名称。 此名称不必唯一。 如果在创建时未指定此字段,群集名称将为空字符串。 |
spark_version | STRING |
群集的运行时版本。 可以通过使用运行时版本 API 调用来检索可用的运行时版本的列表。 此字段为必需字段。 |
spark_conf | SparkConfPair | 一个对象,其中包含一组可选的由用户指定的 Spark 配置键值对。 你也可以分别通过以下属性,将额外 JVM 选项的字符串传入到驱动程序和执行程序:spark.driver.extraJavaOptions 和 spark.executor.extraJavaOptions 。示例 Spark 配置: {"spark.speculation": true, "spark.streaming.ui.retainedBatches": 5} 或{"spark.driver.extraJavaOptions": "-verbose:gc -XX:+PrintGCDetails"} |
node_type_id | STRING |
此字段通过单个值对提供给此群集中的每个 Spark 节点的资源进行编码。 例如,可以针对内存密集型或计算密集型的工作负载来预配和优化 Spark 节点。通过使用列出节点类型 API 调用可以检索可用节点类型的列表。 此字段为必需字段。 |
driver_node_type_id | STRING |
Spark 驱动程序的节点类型。 此字段为可选;如果未设置,驱动程序节点类型将会被设置为与上面定义的 node_type_id 相同的值。 |
custom_tags | ClusterTag | 一个对象,其中包含群集资源的一组标记。 Databricks 会使用这些标记以及 default_tags 来标记所有的群集资源(如 VM)。 注意: Azure Databricks 最多允许 43 个自定义标记。 |
cluster_log_conf | ClusterLogConf | 用于将 Spark 日志传递到长期存储目标的配置。 对于一个群集,只能指定一个目标。 如果提供该配置,日志将会发送到目标,发送的时间间隔为5 mins . 驱动程序日志的目标是 <destination>/<cluster-ID>/driver ,而执行程序日志的目标是 <destination>/<cluster-ID>/executor 。 |
init_scripts | 一个由 InitScriptInfo 构成的数组 | 用于存储初始化脚本的配置。 可以指定任意数量的脚本。 这些脚本会按照所提供的顺序依次执行。 如果指定了 cluster_log_conf ,初始化脚本日志将会发送到<destination>/<cluster-ID>/init_scripts . |
docker_image | DockerImage | 自定义容器的 Docker 映像。 |
spark_env_vars | SparkEnvPair | 一个对象,其中包含一组可选的由用户指定的环境变量键值对。 在启动驱动程序和工作器时,(X,Y) 形式的键值对会按原样导出(即export X='Y' )。若要额外指定一组 SPARK_DAEMON_JAVA_OPTS ,建议将其追加到 $SPARK_DAEMON_JAVA_OPTS ,如以下示例中所示。 这样就确保了还会包含所有默认的 databricks 托管环境变量。Spark 环境变量示例: {"SPARK_WORKER_MEMORY": "28000m", "SPARK_LOCAL_DIRS": "/local_disk0"} 或{"SPARK_DAEMON_JAVA_OPTS": "$SPARK_DAEMON_JAVA_OPTS -Dspark.shuffle.service.enabled=true"} |
autotermination_minutes | INT32 |
在群集处于不活动状态的时间达到此时间(以分钟为单位)后,自动终止该群集。 如果未设置,将不会自动终止此群集。 如果指定,阈值必须介于 10 到 10000 分钟之间。 你也可以将此值设置为 0,以显式禁用自动终止。 |
driver_instance_pool_id | STRING |
要用于驱动程序的实例池的 ID。 另外还必须指定 instance_pool_id 。 有关详细信息,请参阅实例池 API 2.0。 |
instance_pool_id | STRING |
要用于群集节点的实例池的可选 ID。 如果 driver_instance_pool_id 存在,则 instance_pool_id 仅用于工作器节点。 否则,它将同时用于驱动程序节点和工作器节点。 有关详细信息,请参阅实例池 API 2.0。 |
idempotency_token | STRING |
可选令牌,可用于保证群集创建请求的幂等性。 如果将幂等性令牌分配到未处于 TERMINATED 状态的群集,该请求不会创建新群集,而是会返回现有群集的 ID。 否则会创建新群集。 幂等性令牌在该群集终止时会被清除如果指定幂等性令牌,则可在失败时重试,直到该请求成功。 Azure Databricks 将会确保只有一个群集将通过该幂等性令牌启动。 此令牌最多只能包含 64 个字符。 |
apply_policy_default_values | BOOL |
是否对缺失的群集属性使用策略默认值。 |
enable_local_disk_encryption | BOOL |
是否启用对本地附加到群集的磁盘进行加密。 |
azure_attributes | AzureAttributes | 与在 Azure 上运行的群集相关的属性。 如果在群集创建过程中未指定,则使用一组默认值。 |
响应结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
该群集的规范标识符。 |
编辑
端点 | HTTP 方法 |
---|---|
2.0/clusters/edit |
POST |
编辑群集的配置,以匹配所提供的属性和大小。
如果群集处于 RUNNING
或 TERMINATED
状态,则可编辑该群集。
如果在群集处于 RUNNING
状态时编辑该群集,它将会重启,以便使新属性能够生效。 如果在群集处于 TERMINATED
状态时编辑该群集,它将保持 TERMINATED
状态。 在下次使用 clusters/start
API 启动它时,新属性将会生效。 尝试编辑处于任何其他状态的群集将会被拒绝,并返回 INVALID_STATE
错误代码。
无法编辑由 Databricks 作业服务创建的群集。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/edit \
--data @edit-cluster.json
edit-cluster.json
:
{
"cluster_id": "1202-211320-brick1",
"num_workers": 10,
"spark_version": "7.3.x-scala2.12",
"node_type_id": "Standard_D3_v2"
}
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
num_workers 或 autoscale | INT32 或 INT32 |
如果是 num_workers,则此项为此群集应该具有的工作器节点数。 一个群集有一个 Spark 驱动程序和 num_workers 个执行程序用于总共 (num_workers + 1) 个 Spark 节点。 注意: 在读取群集的属性时,此字段反映的是所需的工作器数,而不是实际的工作器数。 例如,如果将群集的大小从 5 个工作器重设为 10 个工作器,此字段将会立即更新,以反映 10 个工作器的目标大小,而 executors 中列出的工作器将会随着新节点的预配,逐渐从 5 个增加到 10 个。如果是 autoscale,则会需要参数,以便根据负载自动纵向扩展或缩减群集。 |
cluster_id | STRING |
该群集的规范标识符。 此字段为必需字段。 |
cluster_name | STRING |
用户请求的群集名称。 此名称不必唯一。 如果在创建时未指定此字段,群集名称将为空字符串。 |
spark_version | STRING |
群集的运行时版本。 可以通过使用运行时版本 API 调用来检索可用的运行时版本的列表。 此字段为必需字段。 |
spark_conf | SparkConfPair | 一个对象,其中包含一组可选的由用户指定的 Spark 配置键值对。 你也可以分别通过以下属性,将额外 JVM 选项的字符串传入到驱动程序和执行程序:spark.driver.extraJavaOptions 和 spark.executor.extraJavaOptions 。示例 Spark 配置: {"spark.speculation": true, "spark.streaming.ui.retainedBatches": 5} 或{"spark.driver.extraJavaOptions": "-verbose:gc -XX:+PrintGCDetails"} |
node_type_id | STRING |
此字段通过单个值对提供给此群集中的每个 Spark 节点的资源进行编码。 例如,可以针对内存密集型或计算密集型的工作负载来预配和优化 Spark 节点。通过使用列出节点类型 API 调用可以检索可用节点类型的列表。 此字段为必需字段。 |
driver_node_type_id | STRING |
Spark 驱动程序的节点类型。 此字段为可选;如果未设置,驱动程序节点类型将会被设置为与上面定义的 node_type_id 相同的值。 |
cluster_log_conf | ClusterLogConf | 用于将 Spark 日志传递到长期存储目标的配置。 对于一个群集,只能指定一个目标。 如果提供该配置,日志将会发送到目标,发送的时间间隔为5 mins . 驱动程序日志的目标是 <destination>/<cluster-ID>/driver ,而执行程序日志的目标是 <destination>/<cluster-ID>/executor 。 |
init_scripts | 一个由 InitScriptInfo 构成的数组 | 用于存储初始化脚本的配置。 可以指定任意数量的目标。 这些脚本会按照所提供的顺序依次执行。 如果指定了 cluster_log_conf ,初始化脚本日志将会发送到<destination>/<cluster-ID>/init_scripts . |
docker_image | DockerImage | 自定义容器的 Docker 映像。 |
spark_env_vars | SparkEnvPair | 一个对象,其中包含一组可选的由用户指定的环境变量键值对。 在启动驱动程序和工作器时,(X,Y) 形式的键值对会按原样导出(即export X='Y' )。若要额外指定一组 SPARK_DAEMON_JAVA_OPTS ,建议将其追加到 $SPARK_DAEMON_JAVA_OPTS ,如以下示例中所示。 这样就确保了还会包含所有默认的 Databricks 托管环境变量。Spark 环境变量示例: {"SPARK_WORKER_MEMORY": "28000m", "SPARK_LOCAL_DIRS": "/local_disk0"} 或{"SPARK_DAEMON_JAVA_OPTS": "$SPARK_DAEMON_JAVA_OPTS -Dspark.shuffle.service.enabled=true"} |
autotermination_minutes | INT32 |
在群集处于不活动状态的时间达到此时间(以分钟为单位)后,自动终止该群集。 如果未设置,将不会自动终止此群集。 如果指定,阈值必须介于 10 到 10000 分钟之间。 你也可以将此值设置为 0,以显式禁用自动终止。 |
instance_pool_id | STRING |
群集所属的实例池的可选 ID。 有关详细信息,请参阅池。 |
apply_policy_default_values | BOOL |
是否对缺失的群集属性使用策略默认值。 |
enable_local_disk_encryption | BOOL |
是否启用对本地附加到群集的磁盘进行加密。 |
azure_attributes | AzureAttributes | 与在 Azure 上运行的群集相关的属性。 如果在群集创建过程中未指定,则使用一组默认值。 |
启动
端点 | HTTP 方法 |
---|---|
2.0/clusters/start |
POST |
启动已终止的群集(如果提供了该群集的 ID)。 这类似于 createCluster
,区别在于:
- 已终止的群集 ID 和属性会被保留。
- 该群集启动时的大小为最后指定的群集大小。 如果已终止的群集是自动缩放的群集,该群集启动时只包含最少数量的节点。
- 如果该群集处于
RESTARTING
状态,则会返回400
错误。 - 你无法启动为运行作业而启动的群集。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/start \
--data '{ "cluster_id": "1234-567890-reef123" }'
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要启动的群集。 此字段为必需字段。 |
重启
端点 | HTTP 方法 |
---|---|
2.0/clusters/restart |
POST |
如果有群集的 ID,则重启该群集。 该群集必须处于 RUNNING
状态。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/restart \
--data '{ "cluster_id": "1234-567890-reef123" }'
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要启动的群集。 此字段为必需字段。 |
重设大小
端点 | HTTP 方法 |
---|---|
2.0/clusters/resize |
POST |
重设群集大小,使其具有所需的工作器数。 该群集必须处于 RUNNING
状态。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/resize \
--data '{ "cluster_id": "1234-567890-reef123", "num_workers": 30 }'
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
num_workers 或 autoscale | INT32 或 INT32 |
如果是 num_workers,则此项为此群集应该具有的工作器节点数。 一个群集有一个 Spark 驱动程序和 num_workers 个执行程序用于总共 (num_workers + 1) 个 Spark 节点。 注意: 在读取群集的属性时,此字段反映的是所需的工作器数,而不是实际的工作器数。 例如,如果将群集的大小从 5 个工作器重设为 10 个工作器,此字段将会立即更新,以反映 10 个工作器的目标大小,而 executors 中列出的工作器将会随着新节点的预配,逐渐从 5 个增加到 10 个。如果是 autoscale,则会需要参数,以便根据负载自动纵向扩展或缩减群集。 |
cluster_id | STRING |
要重设大小的群集。 此字段为必需字段。 |
删除(终止)
端点 | HTTP 方法 |
---|---|
2.0/clusters/delete |
POST |
终止群集(如果提供了该群集的 ID)。 该群集会以异步方式被删除。 终止完成之后,该群集将会处于 TERMINATED
状态。 如果该群集已处于 TERMINATING
或 TERMINATED
状态,则不会执行任何操作。
除非群集已固定,否则在终止该群集 30 天后,系统会将其永久删除。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/delete \
--data '{ "cluster_id": "1234-567890-frays123" }'
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要终止的群集。 此字段为必需字段。 |
永久删除
端点 | HTTP 方法 |
---|---|
2.0/clusters/permanent-delete |
POST |
永久删除群集。 如果该群集正在运行,则它会被终止,并且其资源会以异步方式删除。 如果该群集已终止,则它会被立即删除。
对于永久删除的群集,无法执行任何操作,包括检索该群集的权限。 群集列表中也不会再返回已永久删除的群集。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/permanent-delete \
--data '{ "cluster_id": "1234-567890-frays123" }'
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要永久删除的群集。 此字段为必需字段。 |
获取
端点 | HTTP 方法 |
---|---|
2.0/clusters/get |
GET |
检索群集的信息(如果提供了该群集的标识符)。 当群集正在运行时,或在群集被终止之后的 30 天之内,可以描述群集。
示例
curl --netrc -X GET \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/get \
--data '{ "cluster_id": "1234-567890-reef123" }' \
| jq .
{
"cluster_id": "1234-567890-reef123",
"driver": {
"node_id": "dced0ce388954c38abef081f54c18afd",
"instance_id": "c69c0b119a2a499d8a2843c4d256136a",
"start_timestamp": 1619718438896,
"host_private_ip": "10.0.0.1",
"private_ip": "10.0.0.2"
},
"spark_context_id": 5631707659504820000,
"jdbc_port": 10000,
"cluster_name": "my-cluster",
"spark_version": "8.2.x-scala2.12",
"node_type_id": "Standard_L4s",
"driver_node_type_id": "Standard_L4s",
"custom_tags": {
"ResourceClass": "SingleNode"
},
"autotermination_minutes": 0,
"enable_elastic_disk": true,
"disk_spec": {},
"cluster_source": "UI",
"enable_local_disk_encryption": false,
"azure_attributes": {
"first_on_demand": 1,
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": -1
},
"instance_source": {
"node_type_id": "Standard_L4s"
},
"driver_instance_source": {
"node_type_id": "Standard_L4s"
},
"state": "RUNNING",
"state_message": "",
"start_time": 1610745129764,
"last_state_loss_time": 1619718513513,
"num_workers": 0,
"cluster_memory_mb": 32768,
"cluster_cores": 4,
"default_tags": {
"Vendor": "Databricks",
"Creator": "someone@example.com",
"ClusterName": "my-cluster",
"ClusterId": "1234-567890-reef123"
},
"creator_user_name": "someone@example.com",
"pinned_by_user_name": "3401478490056118",
"init_scripts_safe_mode": false
}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要检索其信息的群集。 此字段为必需字段。 |
响应结构
字段名称 | 类型 | 描述 |
---|---|---|
num_workers 或 autoscale | INT32 或 INT32 |
如果是 num_workers,则此项为此群集应该具有的工作器节点数。 一个群集有一个 Spark 驱动程序和 num_workers 个执行程序用于总共 (num_workers + 1) 个 Spark 节点。 注意: 在读取群集的属性时,此字段反映的是所需的工作器数,而不是实际的工作器数。 例如,如果将群集的大小从 5 个工作器重设为 10 个工作器,此字段将会立即更新,以反映 10 个工作器的目标大小,而 executors 中列出的工作器将会随着新节点的预配,逐渐从 5 个增加到 10 个。如果是 autoscale,则会需要参数,以便根据负载自动纵向扩展或缩减群集。 |
cluster_id | STRING |
该群集的规范标识符。 此 ID 在群集重启和重设大小期间保留,同时每个新群集都有一个全局唯一的 ID。 |
creator_user_name | STRING |
创建者用户名。 如果已删除该用户,响应中将不会包括此字段。 |
驱动程序 | SparkNode | Spark 驱动程序所驻留的节点。 该驱动程序节点包含 Spark Master 和 Databricks 应用程序,该应用程序管理每个笔记本的 Spark REPL。 |
执行程序 | 一个由 SparkNode 构成的数组 | Spark 执行程序所驻留的节点。 |
spark_context_id | INT64 |
规范的 SparkContext 标识符。 此值在 Spark 驱动程序重启时会更改。 (cluster_id, spark_context_id) 对是所有 Spark 上下文中的全局唯一标识符。 |
jdbc_port | INT32 |
Spark JDBC 服务器用于在驱动程序节点中进行侦听的端口。 在执行程序节点中,没有服务会在此端口上进行侦听。 |
cluster_name | STRING |
用户请求的群集名称。 此名称不必唯一。 如果在创建时未指定此字段,群集名称将为空字符串。 |
spark_version | STRING |
群集的运行时版本。 可以通过使用运行时版本 API 调用来检索可用的运行时版本的列表。 |
spark_conf | SparkConfPair | 一个对象,其中包含一组可选的由用户指定的 Spark 配置键值对。 你也可以分别通过以下属性,将额外 JVM 选项的字符串传入到驱动程序和执行程序:spark.driver.extraJavaOptions 和 spark.executor.extraJavaOptions 。示例 Spark 配置: {"spark.speculation": true, "spark.streaming.ui.retainedBatches": 5} 或{"spark.driver.extraJavaOptions": "-verbose:gc -XX:+PrintGCDetails"} |
node_type_id | STRING |
此字段通过单个值对提供给此群集中的每个 Spark 节点的资源进行编码。 例如,可以针对内存密集型或计算密集型的工作负载来预配和优化 Spark 节点。通过使用列出节点类型 API 调用可以检索可用节点类型的列表。 此字段为必需字段。 |
driver_node_type_id | STRING |
Spark 驱动程序的节点类型。 此字段为可选;如果未设置,驱动程序节点类型将会被设置为与上面定义的 node_type_id 相同的值。 |
custom_tags | ClusterTag | 一个对象,其中包含群集资源的一组标记。 Databricks 会使用这些标记以及 default_tags 来标记所有的群集资源。 注意: * 旧版节点类型(如计算优化和内存优化)不支持标记 * Databricks 最多允许 45 个自定义标记 |
cluster_log_conf | ClusterLogConf | 用于将 Spark 日志传递到长期存储目标的配置。 对于一个群集,只能指定一个目标。 如果提供该配置,日志将会发送到目标,发送的时间间隔为5 mins . 驱动程序日志的目标是 <destination>/<cluster-ID>/driver ,而执行程序日志的目标是 <destination>/<cluster-ID>/executor 。 |
init_scripts | 一个由 InitScriptInfo 构成的数组 | 用于存储初始化脚本的配置。 可以指定任意数量的目标。 这些脚本会按照所提供的顺序依次执行。 如果指定了 cluster_log_conf ,初始化脚本日志将会发送到<destination>/<cluster-ID>/init_scripts . |
docker_image | DockerImage | 自定义容器的 Docker 映像。 |
spark_env_vars | SparkEnvPair | 一个对象,其中包含一组可选的由用户指定的环境变量键值对。 在启动驱动程序和工作器时,(X,Y) 形式的键值对会按原样导出(即export X='Y' )。若要额外指定一组 SPARK_DAEMON_JAVA_OPTS ,建议将其追加到 $SPARK_DAEMON_JAVA_OPTS ,如以下示例中所示。 这样就确保了还会包含所有默认的 Databricks 托管环境变量。Spark 环境变量示例: {"SPARK_WORKER_MEMORY": "28000m", "SPARK_LOCAL_DIRS": "/local_disk0"} 或{"SPARK_DAEMON_JAVA_OPTS": "$SPARK_DAEMON_JAVA_OPTS -Dspark.shuffle.service.enabled=true"} |
autotermination_minutes | INT32 |
在群集处于不活动状态的时间达到此时间(以分钟为单位)后,自动终止该群集。 如果未设置,将不会自动终止此群集。 如果指定,阈值必须介于 10 到 10000 分钟之间。 你也可以将此值设置为 0,以显式禁用自动终止。 |
enable_elastic_disk | BOOL |
自动缩放本地存储:启用后,此群集在其 Spark 工作器磁盘空间不足时将会动态获取更多磁盘空间。 有关详细信息,请参阅自动缩放本地存储。 |
instance_pool_id | STRING |
群集所属的实例池的可选 ID。 有关详细信息,请参阅池。 |
state | ClusterState | 群集的状态。 |
state_message | STRING |
与最新状态转换关联的消息(例如,群集进入 TERMINATED 状态的原因)。 |
start_time | INT64 |
(在群集进入 PENDING 状态时)收到群集创建请求的时间(以 epoch 毫秒表示)。 |
terminated_time | INT64 |
终止群集(如果适用)的时间,以 epoch 毫秒表示。 |
last_state_loss_time | INT64 |
群集驱动程序上一次丢失其状态(由于重启或驱动程序故障)的时间。 |
last_activity_time | INT64 |
群集上次处于活动状态的时间(以 epoch 毫秒表示)。 如果群集上至少有一个命令尚未完成,则该群集处于活动状态。 此字段在群集已到达 RUNNING 状态之后可用。 我们会尽最大努力尝试对此字段进行更新。 某些版本的 Spark 不支持报告群集活动性。 有关详细信息,请参阅自动终止。 |
cluster_memory_mb | INT64 |
以兆字节表示的群集内存总量。 |
cluster_cores | FLOAT |
可用于此群集的 CPU 内核数。 这可以是小数,因为某些节点类型被配置为在同一实例上的 Spark 节点之间共享内核。 |
default_tags | ClusterTag | 一个对象,其中包含一组由 Azure Databricks 添加(不管任何 custom_tags 如何)的标记,包括: * Vendor:Databricks * Creator: * ClusterName: * ClusterId: * Name:在作业群集上: * RunName: * JobId:Databricks SQL使用的资源上: * SqlEndpointId: |
cluster_log_status | LogSyncStatus | 群集日志发送状态。 |
termination_reason | TerminationReason | 有关群集终止原因的信息。 此字段只在群集处于 TERMINATING 或 TERMINATED 状态时才会显示。 |
固定
注意
只有 Azure Databricks 管理员才能调用此 API。
端点 | HTTP 方法 |
---|---|
2.0/clusters/pin |
POST |
确保即使在群集已被终止的时间超过了 30 天的情况下仍会保留通用群集配置。 “固定”可确保群集始终会由列表 API 返回。 固定一个已经固定的群集不会起作用。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/pin \
--data '{ "cluster_id": "1234-567890-reef123" }'
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要固定的群集。 此字段为必需字段。 |
取消固定
注意
只有 Azure Databricks 管理员才能调用此 API。
端点 | HTTP 方法 |
---|---|
2.0/clusters/unpin |
POST |
允许最终从列表 API 返回的列表中删除群集。 对一个未固定的群集取消固定不会起作用。
示例
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/unpin \
--data '{ "cluster_id": "1234-567890-reef123" }'
{}
请求结构
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要取消固定的群集。 此字段为必需字段。 |
列表
端点 | HTTP 方法 |
---|---|
2.0/clusters/list |
GET |
返回有关所有固定群集、活动群集、过去 30 天内最多 150 个最近终止的通用群集以及过去 30 天内最多 30 个最近终止的作业群集的相关信息。 例如,如果有 1 个固定群集、4 个活动群集、45 个在过去 30 天内终止的通用群集以及 50 个在过去 30 天内终止的作业群集,则此 API 会返回 1 个固定群集、4 个活动群集、所有 45 个终止的通用群集,以及 30 个最近终止的作业群集。
示例
curl --netrc -X GET \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list \
| jq .
{
"clusters": [
{
"cluster_id": "1234-567890-reef123",
"driver": {
"node_id": "dced0ce388954c38abef081f54c18afd",
"instance_id": "c69c0b119a2a499d8a2843c4d256136a",
"start_timestamp": 1619718438896,
"host_private_ip": "10.0.0.1",
"private_ip": "10.0.0.2"
},
"spark_context_id": 5631707659504820000,
"jdbc_port": 10000,
"cluster_name": "my-cluster",
"spark_version": "8.2.x-scala2.12",
"node_type_id": "Standard_L4s",
"driver_node_type_id": "Standard_L4s",
"custom_tags": {
"ResourceClass": "SingleNode"
},
"autotermination_minutes": 0,
"enable_elastic_disk": true,
"disk_spec": {},
"cluster_source": "UI",
"enable_local_disk_encryption": false,
"azure_attributes": {
"first_on_demand": 1,
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": -1
},
"instance_source": {
"node_type_id": "Standard_L4s"
},
"driver_instance_source": {
"node_type_id": "Standard_L4s"
},
"state": "RUNNING",
"state_message": "",
"start_time": 1610745129764,
"last_state_loss_time": 1619718513513,
"num_workers": 0,
"cluster_memory_mb": 32768,
"cluster_cores": 4,
"default_tags": {
"Vendor": "Databricks",
"Creator": "someone@example.com",
"ClusterName": "my-cluster",
"ClusterId": "1234-567890-reef123"
},
"creator_user_name": "someone@example.com",
"pinned_by_user_name": "3401478490056118",
"init_scripts_safe_mode": false
},
{
"..."
}
]
}
响应结构
字段名称 | 类型 | 描述 |
---|---|---|
clusters | 一个由 ClusterInfo 构成的数组 | 群集的列表。 |
列出节点类型
端点 | HTTP 方法 |
---|---|
2.0/clusters/list-node-types |
GET |
返回受支持的 Spark 节点类型的列表。 这些节点类型可用于启动群集。
示例
curl --netrc -X GET \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list-node-types \
| jq .
{
"node_types": [
{
"node_type_id": "Standard_L80s_v2",
"memory_mb": 655360,
"num_cores": 80,
"description": "Standard_L80s_v2",
"instance_type_id": "Standard_L80s_v2",
"is_deprecated": false,
"category": "Storage Optimized",
"support_ebs_volumes": true,
"support_cluster_tags": true,
"num_gpus": 0,
"node_instance_type": {
"instance_type_id": "Standard_L80s_v2",
"local_disks": 1,
"local_disk_size_gb": 800,
"instance_family": "Standard LSv2 Family vCPUs",
"local_nvme_disk_size_gb": 1788,
"local_nvme_disks": 10,
"swap_size": "10g"
},
"is_hidden": false,
"support_port_forwarding": true,
"display_order": 0,
"is_io_cache_enabled": true,
"node_info": {
"available_core_quota": 350,
"total_core_quota": 350
}
},
{
"..."
}
]
}
响应结构
字段名称 | 类型 | 描述 |
---|---|---|
node_types | 一个由 NodeType 构成的数组 | 可用的 Spark 节点类型的列表。 |
运行时版本
端点 | HTTP 方法 |
---|---|
2.0/clusters/spark-versions |
GET |
返回可用的运行时版本的列表。 这些版本可用于启动群集。
示例
curl --netrc -X GET \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/spark-versions \
| jq .
{
"versions": [
{
"key": "8.2.x-scala2.12",
"name": "8.2 (includes Apache Spark 3.1.1, Scala 2.12)"
},
{
"..."
}
]
}
响应结构
字段名称 | 类型 | 描述 |
---|---|---|
versions | 一个由 SparkVersion 构成的数组 | 所有可用的运行时版本。 |
事件
端点 | HTTP 方法 |
---|---|
2.0/clusters/events |
POST |
检索有关群集活动性的事件列表。 你可以检索活动的(正在运行的、挂起的或正在重新配置的)群集和已终止的群集(自其上次终止后 30 天内)中的事件。 此 API 支持分页。 如果有更多事件需要读取,响应会包括用于请求下一页事件所需的所有参数。
例如:
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/events \
--data @list-events.json \
| jq .
list-events.json
:
{
"cluster_id": "1234-567890-reef123",
"start_time": 1617238800000,
"end_time": 1619485200000,
"order": "DESC",
"offset": 5,
"limit": 5,
"event_type": "RUNNING"
}
{
"events": [
{
"cluster_id": "1234-567890-reef123",
"timestamp": 1619471498409,
"type": "RUNNING",
"details": {
"current_num_workers": 2,
"target_num_workers": 2
}
},
{
"..."
}
],
"next_page": {
"cluster_id": "1234-567890-reef123",
"start_time": 1617238800000,
"end_time": 1619485200000,
"order": "DESC",
"offset": 10,
"limit": 5
},
"total_count": 25
}
用于检索下一页事件的请求示例:
curl --netrc -X POST \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/events \
--data @list-events.json \
| jq .
list-events.json
:
{
"cluster_id": "1234-567890-reef123",
"start_time": 1617238800000,
"end_time": 1619485200000,
"order": "DESC",
"offset": 10,
"limit": 5,
"event_type": "RUNNING"
}
{
"events": [
{
"cluster_id": "1234-567890-reef123",
"timestamp": 1618330776302,
"type": "RUNNING",
"details": {
"current_num_workers": 2,
"target_num_workers": 2
}
},
{
"..."
}
],
"next_page": {
"cluster_id": "1234-567890-reef123",
"start_time": 1617238800000,
"end_time": 1619485200000,
"order": "DESC",
"offset": 15,
"limit": 5
},
"total_count": 25
}
请求结构
检索与某个特定群集相关的事件。
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
要检索其相关事件的群集的 ID。 此字段为必需字段。 |
start_time | INT64 |
以 epoch 毫秒表示的开始时间。 如果为空,则返回从起始时间开始的事件。 |
end_time | INT64 |
以 epoch 毫秒表示的结束时间。 如果为空,则返回截止到当前时间的事件。 |
顺序 | ListOrder | 列出事件时采用的顺序;ASC 或 DESC 。 默认为 DESC 。 |
event_types | 一个由 ClusterEventType 构成的数组 | 可选的一组要筛选的事件类型。 如果为空,则返回所有事件类型。 |
offset | INT64 |
结果集之中的偏移量。 默认为 0(无偏移)。 如果指定了偏移量,并按降序请求结果,则“end_time”字段为必填字段。 |
limit | INT64 |
要包括在一页事件中的最大事件数。 默认为 50,允许的最大值为 500。 |
响应结构
字段名称 | 类型 | 说明 |
---|---|---|
活动 | 一个由 ClusterEvent 构成的数组 | 匹配事件的列表。 |
next_page | 请求结构 | 检索下一页事件所需的参数。 如果没有更多要读取的事件,则省略此字段。 |
total_count | INT64 |
按 Start_time、end_time 和 event_types 筛选的事件的总数。 |
数据结构
本节内容:
- 自动缩放
- ClusterInfo
- ClusterEvent
- ClusterEventType
- EventDetails
- ClusterAttributes
- clusterSize
- ListOrder
- ResizeCause
- ClusterLogConf
- InitScriptInfo
- ClusterTag
- DbfsStorageInfo
- FileStorageInfo
- DockerImage
- DockerBasicAuth
- LogSyncStatus
- NodeType
- ClusterCloudProviderNodeInfo
- ClusterCloudProviderNodeStatus
- ParameterPair
- SparkConfPair
- SparkEnvPair
- SparkNode
- SparkVersion
- TerminationReason
- PoolClusterTerminationCode
- ClusterSource
- ClusterState
- TerminationCode
- TerminationType
- TerminationParameter
- AzureAttributes
- AzureAvailability
AutoScale
定义群集工作器的最小数量和最大数量的范围。
字段名称 | 类型 | 描述 |
---|---|---|
min_workers | INT32 |
群集在未充分利用时可纵向缩减到的最小工作器数。 此数量也是群集在创建后将会具有的初始工作器的数量。 |
max_workers | INT32 |
群集在负载过高时可纵向扩展到的最大工作器数。 max_workers 必须严格大于 min_workers。 |
ClusterInfo
有关群集的元数据。
字段名称 | 类型 | 描述 |
---|---|---|
num_workers 或 autoscale | INT32 或 INT32 |
如果是 num_workers,则此项为此群集应该具有的工作器节点数。 一个群集有一个 Spark 驱动程序和 num_workers 个执行程序用于总共 (num_workers + 1) 个 Spark 节点。 注意: 在读取群集的属性时,此字段反映的是所需的工作器数,而不是实际的工作器数。 例如,如果将群集的大小从 5 个工作器重设为 10 个工作器,此字段将会立即更新,以反映 10 个工作器的目标大小,而 executors 中列出的工作器将会随着新节点的预配,逐渐从 5 个增加到 10 个。如果是 autoscale,则会需要参数,以便根据负载自动纵向扩展或缩减群集。 |
cluster_id | STRING |
该群集的规范标识符。 此 ID 在群集重启和重设大小期间保留,同时每个新群集都有一个全局唯一的 ID。 |
creator_user_name | STRING |
创建者用户名。 如果已删除该用户,响应中将不会包括此字段。 |
驱动程序 | SparkNode | Spark 驱动程序所驻留的节点。 该驱动程序节点包含 Spark Master 和 Databricks 应用程序,该应用程序管理每个笔记本的 Spark REPL。 |
执行程序 | 一个由 SparkNode 构成的数组 | Spark 执行程序所驻留的节点。 |
spark_context_id | INT64 |
规范的 SparkContext 标识符。 此值在 Spark 驱动程序重启时会更改。 (cluster_id, spark_context_id) 对是所有 Spark 上下文中的全局唯一标识符。 |
jdbc_port | INT32 |
Spark JDBC 服务器用于在驱动程序节点中进行侦听的端口。 在执行程序节点中,没有服务会在此端口上进行侦听。 |
cluster_name | STRING |
用户请求的群集名称。 此名称不必唯一。 如果在创建时未指定此字段,群集名称将为空字符串。 |
spark_version | STRING |
群集的运行时版本。 可以通过使用运行时版本 API 调用来检索可用的运行时版本的列表。 |
spark_conf | SparkConfPair | 一个对象,其中包含一组可选的由用户指定的 Spark 配置键值对。 你也可以分别通过以下属性,将额外 JVM 选项的字符串传入到驱动程序和执行程序:spark.driver.extraJavaOptions 和 spark.executor.extraJavaOptions 。示例 Spark 配置: {"spark.speculation": true, "spark.streaming.ui.retainedBatches": 5} 或{"spark.driver.extraJavaOptions": "-verbose:gc -XX:+PrintGCDetails"} |
node_type_id | STRING |
此字段通过单个值对提供给此群集中的每个 Spark 节点的资源进行编码。 例如,可以针对内存或计算密集型工作负载对 Spark 节点进行预配和优化。 通过使用列出节点类型 API 调用,可以检索可用节点类型的列表。 |
driver_node_type_id | STRING |
Spark 驱动程序的节点类型。 此字段为可选;如果未设置,驱动程序节点类型将会被设置为与上面定义的 node_type_id 相同的值。 |
cluster_log_conf | ClusterLogConf | 用于将 Spark 日志传递到长期存储目标的配置。 对于一个群集,只能指定一个目标。 如果提供该配置,日志将会发送到目标,发送的时间间隔为5 mins . 驱动程序日志的目标是 <destination>/<cluster-ID>/driver ,而执行程序日志的目标是 <destination>/<cluster-ID>/executor 。 |
init_scripts | 一个由 InitScriptInfo 构成的数组 | 用于存储初始化脚本的配置。 可以指定任意数量的目标。 这些脚本会按照所提供的顺序依次执行。 如果指定了 cluster_log_conf ,初始化脚本日志将会发送到<destination>/<cluster-ID>/init_scripts . |
docker_image | DockerImage | 自定义容器的 Docker 映像。 |
spark_env_vars | SparkEnvPair | 一个对象,其中包含一组可选的由用户指定的环境变量键值对。 在启动驱动程序和工作器时,(X,Y) 形式的键值对会按原样导出(即export X='Y' )。若要额外指定一组 SPARK_DAEMON_JAVA_OPTS ,建议将其追加到 $SPARK_DAEMON_JAVA_OPTS ,如以下示例中所示。 这样就确保了还会包含所有默认的 databricks 托管环境变量。Spark 环境变量示例: {"SPARK_WORKER_MEMORY": "28000m", "SPARK_LOCAL_DIRS": "/local_disk0"} 或{"SPARK_DAEMON_JAVA_OPTS": "$SPARK_DAEMON_JAVA_OPTS -Dspark.shuffle.service.enabled=true"} |
autotermination_minutes | INT32 |
在群集处于不活动状态的时间达到此时间(以分钟为单位)后,自动终止该群集。 如果未设置,将不会自动终止此群集。 如果指定,阈值必须介于 10 到 10000 分钟之间。 你也可以将此值设置为 0,以显式禁用自动终止。 |
enable_elastic_disk | BOOL |
自动缩放本地存储:启用后,此群集在其 Spark 工作器磁盘空间不足时将会动态获取更多磁盘空间。 有关详细信息,请参阅自动缩放本地存储。 |
instance_pool_id | STRING |
群集所属的实例池的可选 ID。 有关详细信息,请参阅池。 |
state | ClusterState | 群集的状态。 |
state_message | STRING |
与最近的状态转换关联的消息(例如,群集进入 TERMINATED 状态的原因)。 |
start_time | INT64 |
(在群集进入 PENDING 状态时)收到群集创建请求的时间(以 epoch 毫秒表示)。 |
terminated_time | INT64 |
终止群集(如果适用)的时间,以 epoch 毫秒表示。 |
last_state_loss_time | INT64 |
群集驱动程序上一次丢失其状态(由于重启或驱动程序故障)的时间。 |
last_activity_time | INT64 |
群集上次处于活动状态的时间(以 epoch 毫秒表示)。 如果群集上至少有一个命令尚未完成,则该群集处于活动状态。 此字段在群集已到达 RUNNING 状态之后可用。 我们会尽最大努力尝试对此字段进行更新。 某些版本的 Spark 不支持报告群集活动性。 有关详细信息,请参阅自动终止。 |
cluster_memory_mb | INT64 |
以兆字节表示的群集内存总量。 |
cluster_cores | FLOAT |
可用于此群集的 CPU 内核数。 这可以是小数,因为某些节点类型被配置为在同一实例上的 Spark 节点之间共享内核。 |
default_tags | ClusterTag | 一个对象,其中包含一组由 Azure Databricks 添加(不管任何 custom_tags 如何)的标记,包括: * Vendor:Databricks * Creator: * ClusterName: * ClusterId: * Name:在作业群集上: * RunName: * JobId:Databricks SQL使用的资源上: * SqlEndpointId: |
cluster_log_status | LogSyncStatus | 群集日志发送状态。 |
termination_reason | TerminationReason | 有关群集终止原因的信息。 此字段只在群集处于 TERMINATING 或 TERMINATED 状态时才会出现。 |
ClusterEvent
群集事件信息。
字段名称 | 类型 | 描述 |
---|---|---|
cluster_id | STRING |
该群集的规范标识符。 此字段为必需字段。 |
timestamp | INT64 |
事件发生时的时间戳,存储为自 unix epoch 以来的毫秒数。 由 Timeline 服务分配。 |
type | ClusterEventType | 事件类型。 此字段为必需字段。 |
详细信息 | EventDetails | 事件详细信息。 此字段为必需字段。 |
ClusterEventType
群集事件的类型。
事件类型 | 说明 |
---|---|
CREATING | 指示正在创建群集。 |
DID_NOT_EXPAND_DISK | 指示磁盘空间不足,但添加磁盘会超出最大容量。 |
EXPANDED_DISK | 指示磁盘空间不足,并且磁盘已扩展。 |
FAILED_TO_EXPAND_DISK | 指示磁盘空间不足,并且无法扩展磁盘。 |
INIT_SCRIPTS_STARTING | 指示群集范围的初始化脚本已启动。 |
INIT_SCRIPTS_FINISHED | 指示群集范围的初始化脚本已完成。 |
STARTING | 指示正在启动群集。 |
RESTARTING | 指示正在重启群集。 |
TERMINATING | 指示正在终止群集。 |
EDITED | 指示已编辑了群集。 |
RUNNING | 指示已完成群集创建。 包括群集中的节点数,以及失败原因(如果无法获取某些节点)。 |
RESIZING | 指示群集的目标大小的变化(变大或变小)。 |
UPSIZE_COMPLETED | 指示已完成将节点添加到群集。 包括群集中的节点数,以及失败原因(如果无法获取某些节点)。 |
NODES_LOST | 指示某些节点已从群集中丢失。 |
DRIVER_HEALTHY | 指示驱动程序运行正常且群集已可供使用。 |
DRIVER_UNAVAILABLE | 指示该驱动程序不可用。 |
SPARK_EXCEPTION | 指示从驱动程序中引发了 Spark 异常。 |
DRIVER_NOT_RESPONDING | 指示驱动程序已启动,但没有响应(可能是由于 GC)。 |
DBFS_DOWN | 指示驱动程序已启动,但 DBFS 已关闭。 |
METASTORE_DOWN | 指示驱动程序已启动,但元存储已关闭。 |
NODE_BLACKLISTED | 指示 Spark 不允许使用某个节点。 |
PINNED | 指示群集已固定。 |
UNPINNED | 指示群集已取消固定。 |
EventDetails
有关群集事件的详细信息。
字段名称 | 类型 | 描述 |
---|---|---|
current_num_workers | INT32 |
群集中节点的数量。 |
target_num_workers | INT32 |
群集中节点的目标数量。 |
previous_attributes | ClusterAttributes | 编辑群集之前的群集属性。 |
attributes | ClusterAttributes | * 对于已创建的群集,此项为群集的属性。 * 对于已编辑的群集,此项为群集的新属性。 |
previous_cluster_size | clusterSize | 群集在编辑或重设大小之前的大小。 |
cluster_size | clusterSize | 在创建或编辑群集时所设置的群集大小。 |
cause | ResizeCause | 目标大小发生变化的原因。 |
reason | TerminationReason | 终止原因: * 对于 TERMINATED 事件,此项为终止的原因。* 对于 RESIZE_COMPLETE 事件,此项指示未能获取某些节点的原因。 |
user | STRING |
导致事件发生的用户。 (如果事件由 Azure Databricks 导致,则此项为空。) |
ClusterAttributes
在群集创建过程中设置的一组常见属性。 在群集的生存期内无法更改这些属性。
字段名称 | 类型 | 描述 |
---|---|---|
cluster_name | STRING |
用户请求的群集名称。 此名称不必唯一。 如果在创建时未指定此字段,群集名称将为空字符串。 |
spark_version | STRING |
群集的运行时版本,例如“5.0.x-scala2.11”。 可以通过使用运行时版本 API 调用来检索可用的运行时版本的列表。 |
spark_conf | SparkConfPair | 一个对象,其中包含一组可选的由用户指定的 Spark 配置键值对。 你也可以分别通过以下属性,将额外 JVM 选项的字符串传入到驱动程序和执行程序:spark.driver.extraJavaOptions 和 spark.executor.extraJavaOptions 。示例 Spark 配置: {"spark.speculation": true, "spark.streaming.ui.retainedBatches": 5} 或{"spark.driver.extraJavaOptions": "-verbose:gc -XX:+PrintGCDetails"} |
node_type_id | STRING |
此字段通过单个值对提供给此群集中的每个 Spark 节点的资源进行编码。 例如,可以针对内存密集型或计算密集型的工作负载来预配和优化 Spark 节点。通过使用列出节点类型 API 调用可以检索可用节点类型的列表。 |
driver_node_type_id | STRING |
Spark 驱动程序的节点类型。 此字段为可选;如果未设置,驱动程序节点类型将会被设置为与上面定义的 node_type_id 相同的值。 |
ssh_public_keys | 一个由 STRING 构成的数组 |
将会添加到此群集中各个 Spark 节点的 SSH 公钥内容。 对应的私钥可用于在端口 2200 上使用用户名 ubuntu 登录。 最多可以指定 10 个密钥。 |
custom_tags | ClusterTag | 一个对象,其中包含群集资源的一组标记。 Databricks 会使用这些标记以及 default_tags 来标记所有的群集资源。 注意: * 旧版节点类型(如计算优化和内存优化)不支持标记 * Databricks 最多允许 45 个自定义标记 |
cluster_log_conf | ClusterLogConf | 用于将 Spark 日志传递到长期存储目标的配置。 对于一个群集,只能指定一个目标。 如果提供该配置,日志将会发送到目标,发送的时间间隔为5 mins . 驱动程序日志的目标是 <destination>/<cluster-ID>/driver ,而执行程序日志的目标是 <destination>/<cluster-ID>/executor 。 |
init_scripts | 一个由 InitScriptInfo 构成的数组 | 用于存储初始化脚本的配置。 可以指定任意数量的目标。 这些脚本会按照所提供的顺序依次执行。 如果指定了 cluster_log_conf ,初始化脚本日志将会发送到<destination>/<cluster-ID>/init_scripts . |
docker_image | DockerImage | 自定义容器的 Docker 映像。 |
spark_env_vars | SparkEnvPair | 一个对象,其中包含一组可选的由用户指定的环境变量键值对。 在启动驱动程序和工作器时,(X,Y) 形式的键值对会按原样导出(即export X='Y' )。若要额外指定一组 SPARK_DAEMON_JAVA_OPTS ,建议将其追加到 $SPARK_DAEMON_JAVA_OPTS ,如以下示例中所示。 这样就确保了还会包含所有默认的 databricks 托管环境变量。Spark 环境变量示例: {"SPARK_WORKER_MEMORY": "28000m", "SPARK_LOCAL_DIRS": "/local_disk0"} 或{"SPARK_DAEMON_JAVA_OPTS": "$SPARK_DAEMON_JAVA_OPTS -Dspark.shuffle.service.enabled=true"} |
autotermination_minutes | INT32 |
在群集处于不活动状态的时间达到此时间(以分钟为单位)后,自动终止该群集。 如果未设置,将不会自动终止此群集。 如果指定,阈值必须介于 10 到 10000 分钟之间。 你也可以将此值设置为 0,以显式禁用自动终止。 |
enable_elastic_disk | BOOL |
自动缩放本地存储:启用后,此群集在其 Spark 工作器磁盘空间不足时将会动态获取更多磁盘空间。 有关详细信息,请参阅自动缩放本地存储。 |
instance_pool_id | STRING |
群集所属的实例池的可选 ID。 有关详细信息,请参阅池。 |
cluster_source | ClusterSource | 确定群集是由用户通过 UI 创建的,还是由 Databricks 作业计划程序创建的,还是通过 API 请求创建的。 |
policy_id | STRING |
群集策略 ID。 |
azure_attributes | AzureAttributes | 定义属性,例如实例可用性类型、节点位置和最高出价。 如果在群集创建过程中未指定,则使用一组默认值。 |
ClusterSize
群集大小规范。
字段名称 | 类型 | 描述 |
---|---|---|
num_workers 或 autoscale | INT32 或 INT32 |
如果是 num_workers,则此项为此群集应该具有的工作器节点数。 一个群集有一个 Spark 驱动程序和 num_workers 个执行程序用于总共 (num_workers + 1) 个 Spark 节点。 在读取群集的属性时,此字段反映的是所需的工作器数,而不是实际的工作器数。 例如,如果将群集的大小从 5 个工作器重设为 10 个工作器,此字段会更新,以反映 10 个工作器的目标大小,而执行程序中列出的工作器将会随着新节点的预配,逐渐从 5 个增加到 10 个。 如果是 autoscale,则会需要参数,以便根据负载自动纵向扩展或缩减群集。 |
ListOrder
基于列表的查询的泛型排序枚举。
订单 | 描述 |
---|---|
DESC | 降序。 |
ASC | 升序。 |
ResizeCause
重设群集大小的原因。
原因 | 说明 |
---|---|
AUTOSCALE | 根据负载自动重设了大小。 |
USER_REQUEST | 用户请求了新的大小。 |
AUTORECOVERY | 在群集丢失节点后,自动恢复监视器重设了该群集的大小。 |
ClusterLogConf
群集日志的路径。
字段名称 | 类型 | 描述 |
---|---|---|
dbfs | DbfsStorageInfo | 群集日志的 DBFS 位置。 必须提供目标。 例如,应用于对象的{ "dbfs" : { "destination" : "dbfs:/home/cluster_log" } } |
InitScriptInfo
初始化脚本的路径。 若要了解如何将初始化脚本与 Databricks 容器服务配合使用,请参阅使用初始化脚本。
注意
文件存储类型只适用于使用 Databricks 容器服务设置的群集。
字段名称 | 类型 | 描述 |
---|---|---|
dbfs 或 file | DbfsStorageInfo FileStorageInfo |
初始化脚本的 DBFS 位置。 必须提供目标。 例如,应用于对象的{ "dbfs" : { "destination" : "dbfs:/home/init_script" } } 初始化脚本的文件位置。 必须提供目标。 例如,应用于对象的 { "file" : { "destination" : "file:/my/local/file.sh" } } |
ClusterTag
群集标记定义。
类型 | 描述 |
---|---|
STRING |
标记的键。 该键必须符合以下要求: * 长度介于 1 到 512 个字符之间 * 未包含 <>%*&+?\\/ 中的任何字符* 不以 azure 、microsoft 或 windows 开头 |
STRING |
标记的值。 值的长度必须小于或等于 256 个 UTF-8 字符。 |
DbfsStorageInfo
DBFS 存储信息。
字段名称 | 类型 | 描述 |
---|---|---|
目标 | STRING |
DBFS 目标。 示例: dbfs:/my/path |
FileStorageInfo
文件存储信息。
注意
此位置类型只适用于使用 Databricks 容器服务设置的群集。
字段名称 | 类型 | 描述 |
---|---|---|
目标 | STRING |
文件目标。 示例: file:/my/file.sh |
DockerImage
Docker 映像连接信息。
字段 | 类型 | 描述 |
---|---|---|
url | 字符串 | Docker 映像的 URL。 |
basic_auth | DockerBasicAuth | Docker 存储库的基本身份验证信息。 |
DockerBasicAuth
Docker 存储库基本身份验证信息。
字段 | 说明 |
---|---|
username | Docker 存储库的用户名。 |
password | Docker 存储库的密码。 |
LogSyncStatus
日志传送状态。
字段名称 | 类型 | 描述 |
---|---|---|
last_attempted | INT64 |
上次尝试的时间戳。 如果上次尝试失败,last_exception 会包含上次尝试中的异常。 |
last_exception | STRING |
上次尝试引发的异常,如果上次尝试时没有异常,则该字段为 NULL(在响应中省略)。 |
NodeType
Spark 节点类型的说明,包括节点的维度以及将会在其上托管该节点的实例类型。
字段名称 | 类型 | 描述 |
---|---|---|
node_type_id | STRING |
此节点类型的唯一标识符。 此字段为必需字段。 |
memory_mb | INT32 |
可用于此节点类型的内存(以 MB 为单位)。 此字段为必需字段。 |
num_cores | FLOAT |
可用于此节点类型的 CPU 内核数。 如果计算机实例上的内核数无法被该计算机上 Spark 节点数整除,则此数值可以是小数。 此字段为必需字段。 |
description | STRING |
与此节点类型关联的字符串说明。 此字段为必需字段。 |
instance_type_id | STRING |
运行此节点的硬件类型的标识符。 此字段为必需字段。 |
is_deprecated | BOOL |
该节点类型是否为已弃用。 未弃用的节点类型可提供更高的性能。 |
node_info | ClusterCloudProviderNodeInfo | 云服务提供商报告的节点类型信息。 |
ClusterCloudProviderNodeInfo
有关云服务提供商所提供实例的信息。
字段名称 | 类型 | 说明 |
---|---|---|
status | ClusterCloudProviderNodeStatus | 由云服务提供商报告的状态。 |
available_core_quota | INT32 |
可用的 CPU 内核配额。 |
total_core_quota | INT32 |
CPU 内核配额总量。 |
ClusterCloudProviderNodeStatus
云服务提供商所提供实例的状态。
状态 | 描述 |
---|---|
NotEnabledOnSubscription | 不可用于订阅的节点类型。 |
NotAvailableInRegion | 区域中未提供的节点类型。 |
ParameterPair
提供有关群集终止原因的更多信息的参数。
类型 | 描述 |
---|---|
TerminationParameter | 终止信息的类型。 |
STRING |
终止信息。 |
SparkConfPair
Spark 配置键值对。
类型 | 描述 |
---|---|
STRING |
配置属性名称。 |
STRING |
配置属性值。 |
SparkEnvPair
Spark 环境变量键值对。
重要
在作业群集中指定环境变量时,此数据结构中的字段只接受拉丁字符(ASCII 字符集)。 使用非 ASCII 字符将会返回错误。 例如,中文、日文汉字和表情符号都属于无效的非 ASCII 字符。
类型 | 描述 |
---|---|
STRING |
环境变量名称。 |
STRING |
环境变量值。 |
SparkNode
Spark 驱动程序或执行程序配置。
字段名称 | 类型 | 描述 |
---|---|---|
private_ip | STRING |
Spark 节点的专用 IP 地址(通常为 10.x.x.x 地址)。 此地址不同于主机实例的专用 IP 地址。 |
public_dns | STRING |
此节点的公共 DNS 地址。 此地址可用于访问驱动程序节点上的 Spark JDBC 服务器。 |
node_id | STRING |
此节点的全局唯一标识符。 |
instance_id | STRING |
来自云服务提供商的主机实例的全局唯一标识符。 |
start_timestamp | INT64 |
Spark 节点启动时的时间戳(以毫秒表示)。 |
host_private_ip | STRING |
主机实例的专用 IP 地址。 |
SparkVersion
群集的 Databricks Runtime 版本。
字段名称 | 类型 | 描述 |
---|---|---|
key | STRING |
Databricks Runtime 版本键,例如 。 在创建新群集时应以 spark_version 形式提供该值。 由于“通配符”版本(即,7.3.x-scala2.12 是一个“通配符”版本)存在小 bug 修复,确切的运行时版本可能会随时间的推移而更改。 |
name | STRING |
运行时版本的描述性名称,例如“Databricks Runtime 7.3 LTS”。 |
TerminationReason
终止群集的原因。
字段名称 | 类型 | 说明 |
---|---|---|
code | TerminationCode | 指示群集终止原因的状态代码。 |
type | TerminationType | 指示为何终止群集的原因。 |
parameters | ParameterPair | 对象,其中包含一组提供群集终止原因相关信息的参数。 |
PoolClusterTerminationCode
状态代码,用于指示群集因池故障而终止的原因。
代码 | 说明 |
---|---|
INSTANCE_POOL_MAX_CAPACITY_FAILURE | 已达到池的最大容量。 |
INSTANCE_POOL_NOT_FOUND_FAILURE | 群集指定的池不再处于活动状态或不存在。 |
ClusterSource
创建该群集的服务。
服务 | 说明 |
---|---|
UI | 通过 UI 创建的群集。 |
JOB | Databricks 作业计划程序创建的群集。 |
API | 通过 API 调用创建的群集。 |
ClusterState
群集的状态。 可允许的状态转换如下:
PENDING
->RUNNING
PENDING
->TERMINATING
RUNNING
->RESIZING
RUNNING
->RESTARTING
RUNNING
->TERMINATING
RESTARTING
->RUNNING
RESTARTING
->TERMINATING
RESIZING
->RUNNING
RESIZING
->TERMINATING
TERMINATING
->TERMINATED
状态 | 描述 |
---|---|
PENDING |
指示群集正处于创建过程中。 |
RUNNING |
指示群集已启动并已可供使用。 |
RESTARTING |
指示群集正处于重启过程中。 |
RESIZING |
指示群集正处于添加或删除节点的过程中。 |
TERMINATING |
指示群集正处于销毁过程中。 |
TERMINATED |
指示已成功销毁群集。 |
ERROR |
不会再使用此状态。 此状态曾用于指示未能创建的群集。 现已改用 TERMINATING 和 TERMINATED 。 |
UNKNOWN |
指示群集处于未知状态。 群集永不应处于此状态。 |
TerminationCode
指示该群集终止原因的状态代码。
代码 | 说明 |
---|---|
USER_REQUEST | 用户已直接终止该群集。 参数应包括一个 username 字段,用于指示终止该群集的特定用户。 |
JOB_FINISHED | 群集由某个作业启动,并在该作业完成时终止。 |
INACTIVITY | 群集由于处于空闲状态而被终止。 |
CLOUD_PROVIDER_SHUTDOWN | 云服务提供商已终止托管 Spark 驱动程序的实例。 |
COMMUNICATION_LOST | Azure Databricks 已丢失与驱动程序实例上服务的连接。 例如,在云网络基础结构中出现问题时,或者,在实例本身运行不正常时,就可能发生这种情况。 |
CLOUD_PROVIDER_LAUNCH_FAILURE | Azure Databricks 在请求实例以启动群集时遇到了云服务提供商故障。 |
SPARK_STARTUP_FAILURE | 该群集未能初始化。 可能的原因包括未能为 Spark 创建环境或者在启动 Spark Master 和工作进程时出现问题。 |
INVALID_ARGUMENT | 无法启动该群集,因为用户指定了无效的参数。 例如,用户可能为该群集指定了无效的运行时版本。 |
UNEXPECTED_LAUNCH_FAILURE | 在启动此群集时,Azure Databricks 未能完成关键设置步骤,因而导致终止该群集。 |
INTERNAL_ERROR | Azure Databricks 遇到了意外错误,该错误已强制终止正在运行的群集。 有关其他详细信息,请联系 Azure Databricks 支持人员。 |
SPARK_ERROR | Spark 驱动程序未能启动。 可能的原因包括库不兼容以及初始化脚本损坏了 Spark 容器。 |
METASTORE_COMPONENT_UNHEALTHY | 群集未能启动,因为无法访问外部元存储。 请参阅排查故障。 |
DBFS_COMPONENT_UNHEALTHY | 群集未能启动,因为无法访问 Databricks 文件系统 (DBFS)。 |
AZURE_RESOURCE_PROVIDER_THROTTLING | Azure Databricks 已达到 Azure 资源提供程序请求限制。 具体而言,是指对特定资源类型(计算、网络等)的 API 请求速率不能超过该限制。 重试可能有助于解决此问题。 有关详细信息,请参阅 https://docs.microsoft.com/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors。 |
AZURE_RESOURCE_MANAGER_THROTTLING | Azure Databricks 已达到 Azure 资源管理器请求限制,这将会阻止 Azure SDK 向 Azure 资源管理器发出任何读取或写入请求。 请求限制应用于各个订阅,每小时一次。 请于一小时后重试,或者,更改为较小的群集大小可能会有助于解决此问题。 有关详细信息,请参阅 https://docs.microsoft.com/azure/azure-resource-manager/resource-manager-request-limits。 |
NETWORK_CONFIGURATION_FAILURE | 由于网络配置中的错误,已终止该群集。 例如,具有 VNet 注入的工作区的 DNS 设置不正确,从而阻止了对工作器项目的访问。 |
DRIVER_UNREACHABLE | Azure Databricks 无法访问 Spark 驱动程序,因为该驱动程序不可访问。 |
DRIVER_UNRESPONSIVE | Azure Databricks 无法访问 Spark 驱动程序,因为该驱动程序无响应。 |
INSTANCE_UNREACHABLE | Azure Databricks 无法访问实例,因而无法启动群集。 这可能是暂时性的网络问题。 如果问题持续存在,通常表明网络环境配置有误。 |
CONTAINER_LAUNCH_FAILURE | Azure Databricks 无法在群集的工作器节点上启动容器。 请让管理员检查网络配置。 |
INSTANCE_POOL_CLUSTER_FAILURE | 池支持的群集特定的故障。 请参阅池,了解详细信息。 |
REQUEST_REJECTED | Azure Databricks 此时无法处理该请求。 请稍后重试,如果问题仍然存在,请联系 Azure Databricks。 |
INIT_SCRIPT_FAILURE | Azure Databricks 无法在群集的某一节点上加载并运行群集范围的初始化脚本,或者该初始化脚本终止时返回了非零退出代码。 请参阅初始化脚本日志。 |
TRIAL_EXPIRED | Azure Databricks 试用订阅已过期。 |
BOOTSTRAP_TIMEOUT | 群集无法启动,因为用户网络配置出现问题。 可能的原因包括错误配置防火墙设置、UDR 条目、DNS 或路由表。 |
TerminationType
群集的终止原因。
类型 | 描述 |
---|---|
成功 | 终止已成功。 |
CLIENT_ERROR | 不可重试。 重新尝试创建群集之前,客户端必须先修复参数。 |
SERVICE_FAULT | Azure Databricks 服务问题。 客户端可以重试。 |
CLOUD_FAILURE | 云服务提供商基础结构问题。 客户端可以在基础问题得到解决之后重试。 |
TerminationParameter
提供群集终止原因其他相关信息的键。
键 | 说明 |
---|---|
username | 终止群集的用户的用户名。 |
databricks_error_message | 可能说明群集终止原因的其他上下文。 |
inactivity_duration_min | 空闲群集在处于非活动状态的时间已达到此持续时间后关闭。 |
instance_id | 承载 Spark 驱动程序的实例的 ID。 |
azure_error_code | Azure 提供了错误代码,该代码描述了无法预配群集节点的原因。 有关参考信息,请参阅:https://docs.microsoft.com/azure/virtual-machines/windows/error-messages。 |
azure_error_message | Azure 中各种不同故障的上下文,可供用户阅读。 此字段是非结构化的,且其确切格式随时可能发生变更。 |
instance_pool_id | 群集正在使用的实例池的 ID。 |
instance_pool_error_code | 特定于某个池的群集故障的错误代码。 |
AzureAttributes
在群集创建过程中与 Azure 相关的属性集。
字段名称 | 类型 | 说明 |
---|---|---|
first_on_demand | INT32 |
群集的前 first_on_demand 个节点将被放置在按需实例上。 该值必须大于 0,否则群集创建验证会失败。 如果该值大于或等于当前群集大小,则所有节点都将放置在按需实例上。 如果该值小于当前群集大小,则 first_on_demand 节点将被放置在按需实例上,其余节点则放置在可用性实例上。 该值不影响群集大小,并且无法在群集的整个生存期内进行更改。 |
availability | AzureAvailability | first_on_demand 节点之后所有后续节点所使用的可用性类型。 |
spot_bid_max_price | DOUBLE |
Azure 竞价实例所使用的最高出价。 可以将其设置为大于或等于当前竞价。 也可将其设置为 -1(默认值),该值指定不能根据价格收回实例。 实例的价格将是竞价实例的当前价格或标准实例的价格。 可以在 Azure 门户中查看历史定价和收回率。 |
AzureAvailability
Azure 实例可用性类型行为。
类型 | 说明 |
---|---|
SPOT_AZURE | 使用竞价实例。 |
ON_DEMAND_AZURE | 使用按需实例。 |
SPOT_WITH_FALLBACK_AZURE | 最好使用竞价实例,但如果无法获取竞价实例(例如,如果 Azure 竞价太高或超出配额),则改用按需实例。 不适用于池可用性。 |