如何在运行时更新库Databricks?



我有一些代码片段需要使用比当前Databricks Runtime版本更高的库版本来运行。

我有一个由mlflow记录的外部文件,其中包含一个Python库的集合&版本,运行某些代码需要这些版本,我需要确保在运行Databricks笔记本中的单元格之前正确安装这些版本。

我知道有可能在单元格中只做%pip install升级到所需的版本,但我想避免硬编码包和包版本,这就是为什么我试图依赖于mlflow记录的外部文件。

我目前使用的是预安装了pandas==1.2.4的Databricks Runtime 9.1 LTS用于机器学习。然而,对于我的工作流程,我需要一个更新的软件包,pandas==1.3.5

我确保笔记本看到的版本确实是较新的1.3.5版本,而不是预安装的默认1.2.4版本的方法是使用Databricks的Libraries API:

import requests
import pandas as pd 
print(f"pandas version BEFORE installation with Libraries API:", pd.__version__)
ctx = dbutils.notebook.entry_point.getDbutils().notebook().getContext()
host_name  = ctx.tags().get("browserHostName").get()
host_token = ctx.apiToken().get()
cluster_id = ctx.tags().get("clusterId").get()
response = requests.post(
f"https://{host_name}/api/2.0/libraries/install",
headers = {'Authorization': f'Bearer {host_token}'},
json = {
"cluster_id": cluster_id,
"libraries": [
{
"pypi": {
"package": "pandas==1.3.5",
}
}
]
}
)
assert response.status_code == 200, f"Package installation might have failed, status code: {response.status_code}!"
import pandas as pd 
print(f"pandas version AFTER installation with Libraries API:", pd.__version__)

上面单元格的输出是:

pandas version BEFORE installation with Libraries API: 1.2.4
pandas version AFTER installation with Libraries API: 1.2.4

而我想要实现的预期输出是:

pandas version BEFORE installation with Libraries API: 1.2.4
pandas version AFTER installation with Libraries API: 1.3.5

这样的库升级/覆盖Databricks运行时是如何实现的?

您的方法的问题是您没有等到安装完成。从文档:

安装是异步的-它在请求后在后台完成。

所以您需要检查库安装是否完成。你可以使用集群状态API。

虽然我不能100%确定你将完成当前笔记本的任务- Python解释器已经加载了Pandas,所以应该重新启动它以使更改生效。

最新更新