分享方式:


執行 Databricks Notebook 來轉換資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

管線中的 Azure Databricks Notebook 活動會在 Azure Databricks 工作區中執行 Databricks 筆記本。 本文是根據 資料轉換活動 一文,它呈現資料轉換和支援的轉換活動的一般概觀。 Azure Databricks 是用於執行 Apache Spark 的受控平台。

您可以使用 JSON 並透過 ARM 範本建立 Databricks 筆記本,或直接透過 Azure Data Factory Studio 使用者介面加以建立。 如需如何透過使用者介面建立 Databricks 筆記本活動的逐步解說,請參閱使用 Azure Data Factory 中的 Databricks Notebook 活動執行 Databricks 筆記本教學課程。

使用 UI 將適用於 Azure Databricks 的 Notebook 活動新增至管線

若要在管線中使用適用於 Azure Databricks 的 Notebook 活動,請完成下列步驟:

  1. 在 [管線活動] 窗格中搜尋 Notebook,然後將 Notebook 活動拖曳至管線畫布。

  2. 如果尚未選取,請在畫布上選取新的 Notebook 活動。

  3. 選取 [Azure Databricks] 索引標籤,即可選取或建立將要執行 Notebook 活動的新 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 管線中的活動名稱。 Yes
description 說明活動用途的文字。 No
type 若是 Databricks Notebook 活動,則活動類型是 DatabricksNotebook。 Yes
linkedServiceName Databricks Notebook 執行所在之 Databricks 連結服務的名稱。 若要深入了解此已連結的服務,請參閱計算已連結的服務一文。 Yes
notebookPath 要在 Databricks 工作區中執行之 Notebook 的絕對路徑。 此路徑必須以斜線開頭。 Yes
baseParameters 機碼值組的陣列。 基礎映像參數可以用於每個活動執行。 如果 Notebook 採用未指定的參數,則系統會使用 Notebook 的預設值。 在 Databricks Notebook 中尋找更多參數的相關資料。 No
程式庫 要在負責執行工作的叢集上,即將安裝的程式庫清單。 可以是 <字串, 物件> 的陣列。 No

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/jar。 您可以透過 CLI 來列出所有 Jar 程式庫: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