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

时间:2020-03-05 11:00:30

标签: databricks azure-databricks

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

2 个答案:

答案 0 :(得分:10)

有多种方法可以在Azure Databricks中安装软件包:

GUI方法

方法1: Using libraries

要将第三方或本地构建的代码提供给群集中运行的笔记本和作业,您可以安装库。库可以用Python,Java,Scala和R编写。您可以上载Java,Scala和Python库,并指向PyPI,Maven和CRAN存储库中的外部包。

安装第三方库的步骤:

第1步::创建Databricks集群。

第二步:选择创建的集群。

步骤3:选择库=>安装新=>选择库源=“ Maven” =>坐标=>搜索软件包=>选择Maven Central =>搜索所需的软件包。例如:(GDAL)=>选择所需的版本(3.0.0)=>安装

enter image description here

笔记本方法

方法2:使用Cluster-scoped init scripts

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

第一步:将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)

步骤2:首次运行步骤1后重新启动集群。

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

使用pip安装“ psutil”库。

enter image description here

方法4: Library utilities

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

要在笔记本本身内部组织的笔记本的库依赖性。 具有不同库依赖关系的笔记本用户可以不受干扰地共享群集。

enter image description here

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

Libraries 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"
      }
    }
  ]
}

答案 1 :(得分:0)

@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)。

干杯

相关问题