如何通过Cluster API或其他方法获取Azure Databricks Notebook集群的实时非活动时长?
获取Azure Databricks集群实时非活动时长的可行方案
嘿,刚接触Databricks就琢磨这么细节的点,必须给你点个赞!要获取集群的实时非活动时长(当前时间与最后一次运行命令的时间差),确实可以通过Cluster API或者其他方式实现,我给你拆解下具体方案:
1. 核心方案:使用Cluster API的Get Cluster接口
这是最直接的官方方法,毕竟自动终止功能本身就是依赖这个接口返回的字段来判断的。
步骤说明:
- 调用
/api/2.0/clusters/get接口,传入目标集群的cluster_id,就能获取集群的详细信息,其中包含last_activity_time字段——这个字段记录了集群最后一次有活动的UTC毫秒时间戳(比如1699999999000)。 - 拿当前的UTC毫秒时间戳减去
last_activity_time,再转换成分钟/小时,就是你要的非活动时长。
示例代码(用curl调用):
curl -X GET "https://<你的Databricks实例域名>/api/2.0/clusters/get?cluster_id=<目标集群ID>" \ -H "Authorization: Bearer <你的个人访问令牌>"
返回的JSON结构里会有类似这样的字段:
{ "cluster_id": "xxxxxx-xxxxxx-xxxxxx", "last_activity_time": 1699999999000, ... }
你可以用Python快速计算差值:
import time # 从API获取的last_activity_time(毫秒) last_activity_ms = 1699999999000 current_ms = int(time.time() * 1000) inactive_minutes = (current_ms - last_activity_ms) // (1000 * 60) print(f"集群已非活动时长:{inactive_minutes} 分钟")
2. 其他补充方式
如果需要在Notebook内部快速查看,也可以通过Databricks CLI来调用相同的API,或者用dbutils结合一些技巧,但本质上还是依赖last_activity_time字段:
- 安装Databricks CLI后,执行命令:
databricks clusters get --cluster-id <集群ID>,输出里直接找last_activity_time。 - 如果你在Notebook中运行,可以用
%sh魔法命令调用curl,或者用Python的requests库直接发起请求(需要配置令牌)。
注意事项:
- 权限要求:调用API的账号需要拥有集群的
Cluster View权限,否则会返回权限错误。 - 时区问题:
last_activity_time是UTC时间,计算时要确保当前时间也是UTC,避免时区差导致的误差。 - 实时性:API返回的
last_activity_time是Databricks后台最新记录的时间,一般延迟很低,足够满足实时监控的需求。
内容的提问来源于stack exchange,提问作者The Singularity
相关产品推荐
相关产品推荐

