Share via


設定 Delta Live Tables 的管線設定

本文提供設定 Delta Live Tables 管線設定的詳細數據。 Delta Live Tables 提供使用者介面來設定和編輯管線設定。 UI 也提供在 JSON 中顯示和編輯設定的選項。

注意

您可以使用UI或 JSON 規格來設定大部分的設定。 某些進階選項只能使用 JSON 組態。

Databricks 建議使用 UI 熟悉 Delta Live Tables 設定。 如有必要,您可以直接編輯工作區中的 JSON 組態。 將管線部署到新環境或使用 CLI 或 REST API 時,JSON 組態檔也很有用。

如需 Delta Live Tables JSON 組態設定的完整參考,請參閱 Delta Live Tables 管線設定

注意

由於計算資源完全適用於無伺服器管線,因此當您選取 管線的無 伺服器 (公開預覽) 時,無法使用計算設定,例如增強型自動調整、叢集原則、實例類型和叢集卷標。

您仍然可以將組態參數傳遞至無伺服器管線,但是會忽略 JSON 組態中對象中 clusters 設定的任何參數。

若要瞭解如何啟用無伺服器 DLT 管線,請連絡您的 Azure Databricks 帳戶小組。

選擇產品版本

選取 Delta Live Tables 產品版本,其功能最適合您的管線需求。 下列產品版本可供使用:

  • Core 表示執行串流內嵌工作負載。 Core如果您的管線不需要進階功能,例如異動數據擷取 (CDC) 或差異實時數據表預期,請選取版本。
  • Pro 表示執行串流內嵌和 CDC 工作負載。 Pro產品版本支援所有Core功能,以及需要根據源數據變更更新數據表的工作負載支援。
  • Advanced 以執行串流內嵌工作負載、CDC 工作負載,以及需要預期之工作負載。 Advanced產品版本支援 和 Pro 版本的功能Core,也支援使用 Delta Live Tables 預期強制執行數據品質限制。

您可以在建立或編輯管線時選取產品版本。 您可以為每個管線選取不同的版本。 請參閱 Delta Live Tables 產品頁面

注意

如果您的管線包含所選產品版本不支援的功能,例如預期,您會收到錯誤原因的錯誤訊息。 然後,您可以編輯管線以選取適當的版本。

選擇管線模式

您可以持續更新管線,或使用以管線模式為基礎的手動觸發程式。 請參閱 連續與觸發的管線執行

選取叢集原則

用戶必須具有部署計算的許可權,才能設定及更新 Delta Live Tables 管線。 工作區管理員可以設定叢集原則,讓用戶能夠存取 Delta Live Tables 的計算資源。 請參閱 定義差異實時數據表管線計算的限制。

注意

  • 叢集原則是選擇性的。 如果您缺少差異實時數據表所需的計算許可權,請洽詢您的工作區管理員。

  • 若要確保已正確套用叢集原則預設值,請將管線組態中的叢集組態中的值設定apply_policy_default_valuestrue

    {
      "clusters": [
        {
          "label": "default",
          "policy_id": "<policy-id>",
          "apply_policy_default_values": true
        }
      ]
    }
    

設定原始碼連結庫

您可以使用 Delta Live Tables UI 中的檔案選取器來設定定義管線的原始碼。 管線原始碼定義於 Databricks 筆記本或儲存在工作區檔案中的 SQL 或 Python 腳本中。 當您建立或編輯管線時,您可以新增一或多個筆記本或工作區檔案,或筆記本和工作區檔案的組合。

因為 Delta Live Tables 會自動分析數據集相依性來建構管線的處理圖形,因此您可以依任何順序新增原始程式碼連結庫。

您也可以修改 JSON 檔案,以包含儲存在工作區檔案中的 SQL 和 Python 腳本中定義的 Delta Live Tables 原始程式碼。 下列範例包含筆記本和工作區檔案:

{
  "name": "Example pipeline 3",
  "storage": "dbfs:/pipeline-examples/storage-location/example3",
  "libraries": [
    { "notebook": { "path": "/example-notebook_1" } },
    { "notebook": { "path": "/example-notebook_2" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.sql" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.py" } }
  ]
}

指定儲存位置

您可以為發佈至 Hive 中繼存放區的管線指定儲存位置。 指定位置的主要動機是控制管線所寫入資料的物件儲存位置。

由於 Delta Live Tables 管線的所有資料表、數據、檢查點和元數據都完全受 Delta Live Tables 管理,因此大部分與 Delta Live Tables 數據集的互動都是透過向 Hive 中繼存放區或 Unity 目錄註冊的數據表進行。

指定管線輸出數據表的目標架構

雖然是選擇性的,但您應該指定目標來發佈管線所建立的數據表,只要您超越新管線的開發與測試即可。 將管線發佈至目標可讓數據集在 Azure Databricks 環境中其他地方查詢。 請參閱 將數據從 Delta Live Tables 發佈至 Hive 中繼存放區 ,或 搭配您的 Delta Live Tables 管線使用 Unity 目錄。

設定計算設定

注意

由於計算資源完全適用於無伺服器管線,因此當您選取 管線的無 伺服器 (公開預覽) 時,無法使用計算設定。

每個差異實時數據表管線都有兩個相關聯的叢集:

  • 叢集會 updates 處理管線更新。
  • 叢集會 maintenance 執行每日維護工作。

這些叢集所使用的組態是由 clusters 管線設定中指定的屬性所決定。

您可以使用叢集標籤,新增僅適用於特定叢集類型的計算設定。 設定管線叢集時,您可以使用三個標籤:

注意

如果您只定義一個叢集組態,則可以省略叢集卷標設定。 如果未提供標籤的設定,標籤 default 會套用至叢集組態。 只有在您需要自定義不同叢集類型的設定時,才需要叢集卷標設定。

  • 標籤default會定義要同時套用至和 maintenance 叢集的updates計算設定。 將相同的設定套用至這兩個叢集可藉由確保儲存位置的數據存取認證等必要組態套用至維護叢集,以改善維護執行的可靠性。
  • 標籤 maintenance 會定義只套用至叢集的 maintenance 計算設定。 您也可以使用標籤 maintenance 來覆寫標籤設定的 default 設定。
  • 標籤 updates 會定義只套用至叢集的 updates 設定。 使用標籤 updates 來設定不應套用至叢集的 maintenance 設定。

使用和 updates 標籤定義的 default 設定 會合併,以建立updates叢集的最終組態。 如果使用 和 updates 標籤來定義default相同的設定,則以updates標籤定義的設定會覆寫以default標籤定義的設定。

下列範例會定義只新增至叢集組態的 updates Spark 組態參數:

{
  "clusters": [
    {
      "label": "default",
      "autoscale": {
        "min_workers": 1,
        "max_workers": 5,
        "mode": "ENHANCED"
      }
    },
    {
      "label": "updates",
      "spark_conf": {
         "key": "value"
      }
    }
  ]
}

Delta Live Tables 提供與 Azure Databricks 上其他計算相同的叢集設定選項。 如同其他管線設定,您可以修改叢集的 JSON 組態,以指定 UI 中不存在的選項。 請參閱 計算

注意

  • 因為 Delta Live Tables 運行時間會管理管線叢集的生命週期,並執行自定義版本的 Databricks Runtime,所以您無法在管線設定中手動設定某些叢集設定,例如 Spark 版本或叢集名稱。 請參閱 非用戶可設定的叢集屬性。
  • 您可以設定 Delta Live Tables 管線來利用 Photon。 請參閱 什麼是 Photon?

選取要執行管線的實例類型

根據預設,Delta Live Tables 會選取執行管線之驅動程式和背景工作節點的實例類型,但您也可以手動設定實例類型。 例如,您可能想要選取實例類型來改善管線效能,或在執行管線時解決記憶體問題。 您可以在使用 REST API 建立編輯管線時,或在 Delta Live Tables UI 中設定實例類型。

若要在 Delta Live Tables UI 中建立或編輯管線時設定實例類型:

  1. 按兩下 [設定] 按鈕。
  2. 在管線設定的 [ 進階 ] 區段中,於 [ 背景工作類型 ] 和 [驅動程序類型 ] 下拉功能表中,選取管線的實例類型。

若要在管線的 JSON 設定中設定實例類型,請按兩下 [JSON] 按鈕,然後在叢集組態中輸入實例類型組態:

注意

為了避免將不必要的資源指派給 maintenance 叢集,此範例會使用 卷 updates 標來僅設定叢集的 updates 實例類型。 若要將實例類型指派給 updatesmaintenance 叢集,請使用 default 標籤或省略標籤的設定。 如果未提供標籤的設定,標籤 default 就會套用至管線叢集組態。 請參閱 設定計算設定

{
  "clusters": [
    {
      "label": "updates",
      "node_type_id": "Standard_D12_v2",
      "driver_node_type_id": "Standard_D3_v2",
      "..." : "..."
    }
  ]
}

使用自動調整來提高效率並減少資源使用量

使用增強型自動調整來優化管線的叢集使用率。 只有在系統判斷這些資源會增加管線處理速度時,增強的自動調整才會增加額外的資源。 不再需要資源時會釋出,而且叢集會在所有管線更新完成時立即關閉。

若要深入瞭解增強型自動調整,包括組態詳細數據,請參閱 使用增強型自動調整優化差異實時數據表管線的叢集使用率。

延遲計算關機

由於差異即時資料表叢集會在未使用時自動關閉,因此參考叢集組態中設定 autotermination_minutes 的叢集原則會導致錯誤。 若要控制叢集關機行為,您可以使用開發或生產模式, pipelines.clusterShutdown.delay 或使用管線組態中的 設定。 下列範例會將 pipelines.clusterShutdown.delay 值設定為 60 秒:

{
    "configuration": {
      "pipelines.clusterShutdown.delay": "60s"
    }
}

啟用 production 模式時,pipelines.clusterShutdown.delay 的預設值為 0 seconds。 啟用 development 模式時,預設值為 2 hours

建立單一節點叢集

如果您在叢集設定中設定 num_workers 為 0,叢集會建立為單一 節點叢集。 設定自動調整叢集,並將 min_workers 設定為 0 且 max_workers 設定為 0 也會建立單一節點叢集。

如果您設定自動調整叢集並設定為 min_workers 0,則不會將叢集建立為單一節點叢集。 叢集一直至少有一個作用中背景工作角色,直到終止為止。

在差異即時資料表中建立單一節點叢集的範例叢集組態:

{
    "clusters": [
      {
        "num_workers": 0
      }
    ]
}

設定叢集標籤

您可以使用叢集標籤監控管線叢集的使用情況。 建立或編輯管線時,或透過編輯管線叢集的 JSON 設定的方式,在差異即時資料表 UI 中新增叢集標籤。

雲端記憶體組態

若要存取 Azure 記憶體,您必須使用 spark.conf 叢集組態中的設定來設定必要的參數,包括存取令牌。 如需設定 Azure Data Lake 儲存體 Gen2 (ADLS Gen2) 記憶體帳戶存取權的範例,請參閱在管線中使用秘密安全地存取記憶體認證。

參數化管線

定義數據集的 Python 和 SQL 程式代碼可由管線的設定參數化。 參數化可啟用下列使用案例:

  • 將長路徑和其他變數與程式代碼分開。
  • 減少開發或預備環境中處理的數據量,以加速測試。
  • 重複使用從多個數據源處理的相同轉換邏輯。

下列範例會使用組 startDate 態值,將開發管線限制為輸入數據的子集:

CREATE OR REFRESH LIVE TABLE customer_events
AS SELECT * FROM sourceTable WHERE date > '${mypipeline.startDate}';
@dlt.table
def customer_events():
  start_date = spark.conf.get("mypipeline.startDate")
  return read("sourceTable").where(col("date") > start_date)
{
  "name": "Data Ingest - DEV",
  "configuration": {
    "mypipeline.startDate": "2021-01-02"
  }
}
{
  "name": "Data Ingest - PROD",
  "configuration": {
    "mypipeline.startDate": "2010-01-02"
  }
}

管線觸發間隔

您可以使用 pipelines.trigger.interval 來控制流程更新數據表或整個管線的觸發間隔。 由於觸發的管線只會處理每個數據表一次, pipelines.trigger.interval 因此 只會與連續管線搭配使用。

Databricks 建議針對個別數據表設定 pipelines.trigger.interval ,因為串流查詢與批次查詢的預設值不同。 只有在處理需要控制整個管線圖形的更新時,才會在管線上設定值。

您可以在 Python 或 SET SQL 中使用 來設定pipelines.trigger.interval資料表spark_conf

@dlt.table(
  spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
    return (<query>)
SET pipelines.trigger.interval=10 seconds;

CREATE OR REFRESH LIVE TABLE TABLE_NAME
AS SELECT ...

若要在管線上設定 pipelines.trigger.interval ,請將它新增至 configuration 管線設定中的物件:

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}

允許非系統管理員使用者從已啟用 Unity 目錄的管線檢視驅動程序記錄

根據預設,只有管線擁有者和工作區管理員有權從執行已啟用 Unity 目錄之管線的叢集檢視驅動程序記錄。 您可以使用 CAN MANAGE、CAN VIEW 或 CAN RUN 許可權,將下列 Spark 組態參數新增至configuration管線設定中的 物件,以啟用驅動程式記錄的存取權:

{
  "configuration": {
    "spark.databricks.acl.needAdminPermissionToViewLogs": "false"
  }
}

新增管線事件的電子郵件通知

您可以設定一或多個電子郵件位址,以在發生下列情況時接收通知:

  • 管線更新成功完成。
  • 管線更新失敗,發生可重試或無法重試的錯誤。 選取此選項可接收所有管線失敗的通知。
  • 管線更新失敗,並出現無法重試(嚴重)錯誤。 選取此選項,只有在發生無法重試的錯誤時,才會收到通知。
  • 單一數據流失敗。

若要在建立或編輯管線時設定電子郵件通知:

  1. 按兩下 [ 新增通知]。
  2. 輸入一或多個電子郵件位址以接收通知。
  3. 按兩下每個通知類型的複選框,以傳送至已設定的電子郵件位址。
  4. 按兩下 [ 新增通知]。

控制 SCD 類型 1 查詢的墓碑管理

下列設定可用來控制 SCD 類型 1 處理期間事件之墓碑管理 DELETE 的行為:

  • pipelines.applyChanges.tombstoneGCThresholdInSeconds:將此值設定為比對順序失序數據之間的最高預期間隔,以秒為單位。 默認值為172800秒(2天)。
  • pipelines.applyChanges.tombstoneGCFrequencyInSeconds:此設定可控制檢查清除的墓碑頻率,以秒為單位。 預設值為1800秒(30分鐘)。

請參閱 套用變更 API:簡化差異實時數據表中的異動數據擷取。

設定管線權限

您必須擁有管線的 CAN MANAGEIS OWNER 許可權,才能管理管線的許可權。

  1. 在提要欄位中,按兩下 [ Delta Live Tables]。

  2. 選取管線的名稱。

  3. 單擊 kebab 功能表 垂直省略號,然後選取 [ 許可權]。

  4. [許可權] 設定 中,選取 [選取使用者、群組或服務主體...] 下拉功能表,然後選取使用者、群組或服務主體。

    許可權 設定 對話框

  5. 從許可權下拉功能表中選取許可權。

  6. 按一下 [新增] 。

  7. 按一下 [檔案] 。

啟用 Delta Live Tables 的 RocksDB 狀態存放區

您可以在部署管線之前設定下列設定,以啟用 RocksDB 型狀態管理:

{
  "configuration": {
     "spark.sql.streaming.stateStore.providerClass": "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
  }
}

若要深入瞭解 RocksDB 狀態存放區,包括 RocksDB 的設定建議,請參閱 在 Azure Databricks 上設定 RocksDB 狀態存放區。