python - 您可以在 Databricks 池节点上预安装库吗?

标签 python azure cluster-computing databricks pool

我们有许多 Python Databricks 作业,它们都使用相同的底层 Wheel 包来安装其依赖项。即使节点已在池中闲置,安装此 Wheel 软件包仍需要 90 秒。

其中一些作业运行时间非常长,因此我们希望使用作业计算机集群 for the lower cost in DBUs.

其中一些作业的运行时间要短得多(<10 秒),其中 90 秒的安装时间似乎更重要。我们一直在考虑使用热集群(通用计算)来完成这些较短的作业。如果可能的话,我们希望避免通用计算的额外成本。

阅读 Databricks 文档表明 Idle instances in the Pool are reserved for us but not costing us DBUs 。有没有办法让我们在空闲实例上预安装所需的库,以便当作业完成时我们能够立即开始处理它?<​​/p>

是否有替代方法可以满足类似的用例?

最佳答案

您无法将库直接安装到池中的节点中,因为实际代码是在与 Databricks Runtime 对应的 Docker 容器中执行的。有多种方法可以加快库的安装速度:

  • 创建您的own Docker image预安装了所有必需的库,并且 pre-load Databricks Runtime version和你的 Docker 镜像 - 这部分无法通过 UI 完成,因此你需要使用 REST API (参见preloaded_docker_images属性的描述),databrick-cli ,或Databricks Terraform provider 。自定义 Docker 镜像的主要缺点是某些功能无法开箱即用,例如 Repos 中的任意文件、Web 终端等(不记得完整列表)
  • 将所有必需的库及其依赖项放入 DBFS 并通过 cluster init script 安装它们。收集二进制依赖项,而不是仅包含源代码的包,这一点非常重要,因此在安装时不需要编译它们。这可以完成一次:
    • 对于 Python,这可以通过 pip download --prefer-binary lib1 lib2 ... 来完成
    • 对于 Java/Scala,您可以使用 mvn dependency:get -Dartifact=<maven_coordinates> ,这会将依赖项下载到 ~/.m2/repository文件夹,您可以从中将 jar 复制到 DBFS 并在 init 脚本中使用 cp /dbfs/.../jars/* /databricks/jars/命令
    • 对于 R,它稍微复杂一些,但也是可行的

关于python - 您可以在 Databricks 池节点上预安装库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70229777/

相关文章:

node.js - 部署到 Azure 应用服务的 Node 应用程序 : Error: The service is unavailable

c# - Azure Active Directory 回复 URL 未按预期工作

c# - 序列化/反序列化 "NHibernate Session",延迟初始化错误 ("StateServer mode"集群)

python - Tkinter 如何将 B1-Motion 绑定(bind)到 Combobox

python - 在 FunkLoad 中测试发布到表单

python - 我应该如何检查 tensorflow 张量中的所有数字是否都是二进制

Python,为什么dataclass属性是只读的?

azure - 更新项目时,Azure Redis 缓存中是否有任何锁定机制?

python - 监控节点集群

java - 在亚马逊集群上加速 java maven 编译