通过运行 Azure Databricks 中的 Jar 活动转换数据

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

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

使用 UI 向管道添加 Azure Databricks 的 Jar 活动

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

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

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

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

    显示 Jar 活动的 UI。

  4. 选择“设置”选项卡,并指定要在 Azure Databricks 上执行的类名、要传递给 Jar 的可选参数以及要在群集上安装以执行作业的库。

    显示 Jar 活动的“设置”选项卡的 UI。

Databricks Jar 活动定义

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

{
    "name": "SparkJarActivity",
    "type": "DatabricksSparkJar",
    "linkedServiceName": {
        "referenceName": "AzureDatabricks",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "mainClassName": "org.apache.spark.examples.SparkPi",
        "parameters": [ "10" ],
        "libraries": [
            {
                "jar": "dbfs:/docs/sparkpi.jar"
            }
        ]
    }
}

Databricks Jar 活动属性

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

属性 描述 必需
name 管道中活动的名称。
description 描述活动用途的文本。
type 对于 Databricks Jar 活动,活动类型是 DatabricksSparkJar。
linkedServiceName Databricks 链接服务的名称,Jar 活动在其上运行。 若要了解此链接服务,请参阅计算链接服务一文。
mainClassName 类的全名,包含要执行的主要方法。 此类必须包含在作为库提供的 JAR 中。 一个 JAR 文件中可以包含多个类。 每个类都可以包含一种主要方法。
parameters 将传递到主要方法的参数。 该属性是一个字符串数组。
要安装在将执行作业的群集上的库列表。 它可以是 <string, object> 数组 是(至少有一个包含 mainClassName 方法)

注意

已知问题 - 当使用同一交互式群集来运行并发的 Databricks Jar 活动(没有重启群集)时,在 Databricks 中存在一个已知问题,即第一个活动的输入参数也会被后续活动使用。 这会导致将不正确的参数传递给后续作业。 若要缓解此问题,请改用作业群集

databricks 活动支持的库

在前面的 Databricks 活动定义中,已指定以下库类型:jareggmavenpypicran

{
    "libraries": [
        {
            "jar": "dbfs:/mnt/libraries/library.jar"
        },
        {
            "egg": "dbfs:/mnt/libraries/library.egg"
        },
        {
            "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 中的库

可以使用工作区 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