我想在 Databricks 上使用 Dask。这应该是可能的(我不明白为什么不可以)。如果我导入它,会发生以下两种情况之一,要么我得到一个
ImportError
,但是当我安装 distributed
来解决此问题时,DataBricks 只会说 Cancelled
而不会引发任何错误。
任何寻找答案的人,请查看这篇中等博客文章。为了防止人们在评论中错过这一点,我将其作为答案发布。
我认为我们没有听说过有人在 databricks 下使用 Dask,但只要它只是 python,它很可能是可能的。
Dask 的默认调度程序是线程,这是最有可能起作用的。在这种情况下,您甚至不需要安装
distributed
。
对于 Canceled 错误,听起来您正在使用分布式,并且猜测系统不允许您启动额外的进程(您可以使用
subprocess
模块进行测试)。要解决此问题,您可以这样做
client = dask.distributed.Client(processes=False)
当然,如果确实是你需要的流程,那就不太好了。另外,我不知道如何公开仪表板的端口。
Dask 社区现在有一个 dask-databricks 软件包,可以快速设置在多节点 Databricks 上与 Spark/Photon 一起运行 Dask 集群。这样您就可以运行一个集群,然后在同一基础设施上使用任一框架。
您创建一个 init 脚本来安装
dask-databricks
并使用 Dask CLI 命令启动 Dask 集群组件。
#!/bin/bash
# Install Dask + Dask Databricks
/databricks/python/bin/pip install --upgrade dask[complete] dask-databricks
# Start Dask cluster components
dask databricks run
然后在 Databricks Notebook 中,您可以使用 dask_databricks.get_client()
实用程序获取
Dask 客户端对象。
import dask_databricks
client = dask_databricks.get_client()
它还可以通过 Databricks Web 代理设置对 Dask 仪表板的访问。