如何使用笔记本中的某些命令在数据块集群上安装库?

How to install a library on a databricks cluster using some command in the notebook?

实际上我想在我的 Azure databricks 集群上安装一个库,但我不能使用 UI 方法。这是因为每次我的集群都会发生变化并且在转换过程中我无法使用 UI 向其添加库。是否有任何 databricks 实用程序命令可以执行此操作?

在 Azure Databricks 中安装包的方法有多种:

GUI 方法

方法一:Using libraries

要使第三方或本地构建的代码可用于集群上的笔记本和作业 运行ning,您可以安装一个库。可以用Python、Java、Scala、R写库,可以上传Java、Scala、Python库,指向PyPI、Maven、和 CRAN 存储库。

安装第三方库的步骤:

步骤 1: 创建 Databricks 集群。

Step2: Select集群创建。

第 3 步: Select 库 => 安装新的 => Select 库源 = "Maven" => 坐标 => 搜索包 => Select Maven Central => 搜索所需的包。示例:(GDAL) => Select 所需版本 (3.0.0) => 安装

笔记本方法

方法 2: 使用 Cluster-scoped init scripts

集群范围的初始化脚本是在集群配置中定义的初始化脚本。集群范围的初始化脚本适用于您创建的集群和为 运行 作业创建的集群。由于脚本是集群配置的一部分,集群访问控制让您可以控制谁可以更改脚本。

Step1: 添加 DBFS 路径 dbfs:/databricks/scripts/gdal_install.sh 到集群初始化脚本

# --- Run 1x to setup the init script. ---
# Restart cluster after running.
dbutils.fs.put("/databricks/scripts/gdal_install.sh","""
#!/bin/bash
sudo add-apt-repository ppa:ubuntugis/ppa
sudo apt-get update
sudo apt-get install -y cmake gdal-bin libgdal-dev python3-gdal""",
True)

Step2: 第一次运行ning step1 后重启集群。

方法3: Python使用pip install在Spark容器中安装包

使用 pip 安装“psutil”库。

方法4: Library utilities

The library utility is deprecated.

库实用程序允许您安装 Python 库并创建一个仅限笔记本会话的环境。这些库在驱动程序和执行程序上均可用,因此您可以在 UDF 中引用它们。这使得:

要在笔记本本身内组织的笔记本的库依赖项。 不同库依赖的笔记本用户共享一个集群互不干扰

CLI & API 方法

方法5: Libraries CLI

您 运行 Databricks 库 CLI 子命令,方法是将它们附加到 databricks 库。

databricks libraries -h

从 DBFS 安装 JAR:

databricks libraries install --cluster-id $CLUSTER_ID --jar dbfs:/test-dir/test.jar

方法6: Libraries API

库 API 允许您安装和卸载库以及获取库在集群上的状态。

在集群上安装库。安装是异步的 - 它在请求后在后台完成。 2.0/libraries/install

示例请求:

{
  "cluster_id": "10201-my-cluster",
  "libraries": [
    {
      "jar": "dbfs:/mnt/libraries/library.jar"
    },
    {
      "egg": "dbfs:/mnt/libraries/library.egg"
    },
    {
      "whl": "dbfs:/mnt/libraries/mlflow-0.0.1.dev0-py2-none-any.whl"
    },
    {
      "whl": "dbfs:/mnt/libraries/wheel-libraries.wheelhouse.zip"
    },
    {
      "maven": {
        "coordinates": "org.jsoup:jsoup:1.7.2",
        "exclusions": ["slf4j:slf4j"]
      }
    },
    {
      "pypi": {
        "package": "simplejson",
        "repo": "https://my-pypi-mirror.com"
      }
    },
    {
      "cran": {
        "package": "ada",
        "repo": "https://cran.us.r-project.org"
      }
    }
  ]
}

@CHEEKATLAPRADEEP-MSFT 的回答太棒了!补充一下:

如果您希望所有笔记本/集群都安装相同的库,您可以利用集群范围或全局(新功能)初始化脚本。

下面的示例从 PyPi 检索包:

#!/bin/sh

# Install dependencies
pip install --upgrade boto3 psycopg2-binary requests simple-salesforce

您甚至可以使用私有包索引 - 例如 AWS CodeArtifact:

#Install AWS CLI
pip install --upgrade awscli

# Configure pip
aws codeartifact login --region <REGION> --tool pip --domain <DOMAIN> --domain-owner <AWS_ACCOUNT_ID> --repository <REPO>
pip config set global.extra-index-url https://pypi.org/simple

注意:必须允许集群实例配置文件获取 CodeArtifact 凭据 (arn:aws:iam::aws:policy/AWSCodeArtifactReadOnlyAccess)。

干杯