通过运行 Databricks Notebook 转换数据

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

管道中的 Azure Databricks Notebook 活动在 Azure Databricks 工作区中运行 Databricks Notebook。 本文基于数据转换活动一文,它概述了数据转换和受支持的转换活动。 Azure Databricks 是一个用于运行 Apache Spark 的托管平台。

可以使用 JSON 通过 ARM 模板创建 Databricks 笔记本,也可以直接通过 Azure 数据工厂工作室用户界面创建。 有关如何使用用户界面创建 Databricks Notebook 活动的分步演练,请参考教程在 Azure 数据工厂中使用 Databricks Notebook 活动运行 Databricks Notebook

使用 UI 将 Azure Databricks 的 Notebook 活动添加到管道

若要在管道中使用 Azure Databricks 的 Notebook 活动,请完成以下步骤:

  1. 在“管道活动”窗格中搜索“Notebook”,然后将“Notebook”活动拖到管道画布上。

  2. 在画布上选择新的笔记本活动(如果尚未选择)。

  3. 选择“Azure Databricks”选项卡,选择或创建将执行笔记本活动的新 Azure Databricks 链接服务。

    Shows the UI for a Notebook activity.

  4. 选择“设置”选项卡,并指定要在 Azure Databricks 上执行的笔记本路径、要传递到笔记本的可选基本参数,以及要在群集上安装以执行作业的任何其他库。

    Shows the UI for the Settings tab for a Notebook activity.

Databricks Notebook 活动定义

下面是 Databricks Notebook 活动的示例 JSON 定义:

{
    "activity": {
        "name": "MyActivity",
        "description": "MyActivity description",
        "type": "DatabricksNotebook",
        "linkedServiceName": {
            "referenceName": "MyDatabricksLinkedservice",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "notebookPath": "/Users/user@example.com/ScalaExampleNotebook",
            "baseParameters": {
                "inputpath": "input/folder1/",
                "outputpath": "output/"
            },
            "libraries": [
                {
                "jar": "dbfs:/docs/library.jar"
                }
            ]
        }
    }
}

Databricks Notebook 活动属性

下表描述了 JSON 定义中使用的 JSON 属性:

属性 描述 必需
name 管道中活动的名称。
description 描述活动用途的文本。
type 对于 Databricks Notebook 活动,活动类型是 DatabricksNotebook。
linkedServiceName Databricks 链接服务的名称,Databricks Notebook 在其上运行。 若要了解此链接服务,请参阅计算链接服务一文。
notebookPath 要在 Databricks 工作区中运行的 Notebook 的绝对路径。 此路径必须以斜杠开头。
baseParameters 一个键/值对的数组。 基参数可用于运行每个活动。 如果 Notebook 采用的参数未指定,则将使用 Notebook 中的默认值。 有关参数的更多信息,请参阅 Databricks Notebook
要安装在将执行作业的群集上的库列表。 它可以是 <string, object> 数组。

Databricks 活动支持的库

在以上 Databricks 活动定义中,指定这些库类型:jar、egg、whl、maven、pypi、cran 。

{
    "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": "http://my-pypi-mirror.com"
            }
        },
        {
            "cran": {
                "package": "ada",
                "repo": "https://cran.us.r-project.org"
            }
        }
    ]
}

有关详细信息,请参阅针对库类型的 Databricks 文档

在笔记本和管道之间传递参数

可以使用 Databricks 活动中的 baseParameters 属性将参数传递给笔记本。

在某些情况下,你可能需要将某些值从笔记本传回服务,这些值可用于服务中的控制流(条件检查)或由下游活动使用(大小限制为 2 MB)。

  1. 在笔记本中,可以调用 dbutils.notebook.exit("returnValue"),相应的“returnValue”将会返回到服务。

  2. 可以使用表达式(如 @{activity('databricks notebook activity name').output.runOutput})在服务中使用该输出。

    重要

    如果要传递 JSON 对象,可以通过追加属性名称来检索值。 示例:@{activity('databricks notebook activity name').output.runOutput.PropertyName}

如何上传 Databricks 中的库

可以使用工作区 UI:

  1. 使用 Databricks 工作区 UI

  2. 若要获取使用 UI 添加的库的 dbfs 路径,可以使用 Databricks CLI

    使用 UI 时,Jar 库通常存储在 dbfs:/FileStore/jars 下。 可以通过 CLI 列出所有库:databricks fs ls dbfs:/FileStore/job-jars

或者,可以使用 Databricks CLI:

  1. 按照使用 Databricks CLI 复制库操作

  2. 使用 Databricks CLI(安装步骤)

    例如,将 JAR 复制到 dbfs:dbfs cp SparkPi-assembly-0.1.jar dbfs:/docs/sparkpi.jar