建立和執行 Azure Databricks 作業

本文詳細說明如何使用作業 UI 建立及執行 Azure Databricks 作業。

若要了解作業的組態選項以及如何編輯現有的作業,請參閱 設定 Azure Databricks 作業的設定。

若要瞭解如何管理和監視作業執行,請參閱 檢視和管理作業執行

若要使用 Azure Databricks 作業建立您的第一個工作流程,請參閱 快速入門

重要

  • 工作區限制為1000個並行工作執行。 429 Too Many Requests 回應會在您要求無法立即啟動的執行時傳回。
  • 工作區一小時內可建立的工作數目限制為10000個(包括「執行提交」)。 這項限制也會影響 REST API 和筆記本工作流程所建立的作業。

使用 CLI、API 或筆記本建立和執行作業

建立作業

  1. 執行下列其中一項動作:

    • 點選 Jobs Icon提要欄位中的 [工作流程 ],然後按下 Create Job Button
    • 在提要欄位中,按兩下 New Icon[新增 ],然後選取 [ 作業]。

    [工作] 索引標籤隨即出現,其中包含 [建立工作] 對話框,以及包含作業層級設定的 [作業詳細數據] 側邊面板。

    Create job screen

  2. 將 [新增作業...] 取代為您的作業名稱。

  3. [任務名稱] 欄位中輸入任務的名稱

  4. 在 [ 類型 ] 下拉功能表中,選取要執行的工作類型。 請參閱 工作類型選項

  5. 設定工作執行所在的叢集。 在 [ 叢集 ] 下拉功能表中,選取 [新增作業叢集 ] 或 [現有全用途叢集]。

    • 新增作業叢集:按兩下[叢集] 下拉功能表中的 [編輯],然後完成叢集設定
    • 現有的全用途叢集:在 [叢集] 下拉功能表中 選取現有的叢集 。 若要在新頁面上開啟叢集,請按下 External Link 叢集名稱和描述右邊的圖示。

    若要深入瞭解如何選取和設定叢集以執行工作,請參閱 搭配您的作業使用 Azure Databricks 計算。

  6. 若要新增相依連結庫,請按兩下 [相依連結庫] 旁的 [+ 新增]。 請參閱設定相依程式庫

  7. 您可以傳遞工作的參數。 如需格式化和傳遞參數需求的相關信息,請參閱 將參數傳遞至 Azure Databricks 作業工作

  8. 若要選擇性地接收工作開始、成功或失敗的通知,請按兩下 [電子郵件] 旁的 [+ 新增]。 失敗通知會在初始工作失敗和任何後續重試時傳送。 若要篩選通知並減少傳送的電子郵件數目,請檢查已略過執行的靜音通知、取消執行的靜音通知,或將通知設為靜音,直到上次重試為止。

  9. 若要選擇性地設定工作的重試原則,請按兩下 [重試] 旁的 [+ 新增]。 請參閱 設定工作的重試原則。

  10. 若要選擇性地設定工作的預期工期或逾時,請按兩下 [持續時間閾值] 旁的 [+ 新增]。 請參閱 設定工作的預期完成時間或逾時

  11. 按一下 [建立]

若要新增另一個工作,請按兩下 Add Task Button DAG 檢視中的 。 如果您已為先前的工作設定 新的作業叢集,則會提供共用叢集 選項。 您也可以在建立或編輯工作時,為每個工作設定叢集。 若要深入瞭解如何選取和設定叢集以執行工作,請參閱 搭配您的作業使用 Azure Databricks 計算。

您可以選擇性地設定作業層級設定,例如通知、作業觸發程式和許可權。 請參閱 編輯作業。 您也可以設定與作業工作共用的作業層級參數。 請參閱 新增所有作業工作的參數。

工作類型選項

以下是您可以新增至 Azure Databricks 作業的工作類型,以及不同工作類型的可用選項:

  • Notebook:在 [ 來源 ] 下拉功能表中,選取 [工作區 ] 以使用位於 Azure Databricks 工作區資料夾的筆記本,或 位於遠端 Git 存放庫中筆記本的 Git 提供者

    工作區:使用檔案瀏覽器尋找筆記本、按下筆記本名稱,然後按兩下 [ 確認]。

    Git 提供者:按兩下 [ 編輯 ] 或 [新增 Git 參考 ],然後輸入 Git 存放庫資訊。 請參閱 從遠端 Git 存放庫使用筆記本。

    注意

    筆記本數據格輸出總計(所有筆記本儲存格的合併輸出)受限於 20 MB 的大小限制。 此外,個別數據格輸出受限於 8MB 大小限制。 如果儲存格總輸出超過大小 20 MB,或個別儲存格的輸出大於 8MB,則會取消執行並標示為失敗。

    如果您需要尋找接近或超出限制的儲存格,請針對所有用途的叢集執行筆記本,並使用此 筆記本自動儲存技術

  • JAR:指定 Main 類別。 使用包含 main 方法之類別的完整名稱,例如 org.apache.spark.examples.SparkPi。 然後按兩下 [相依連結庫] 底下的 [新增],以新增執行工作所需的連結庫。 其中一個連結庫必須包含主要類別。

    若要深入瞭解 JAR 工作,請參閱 在 Azure Databricks 作業中使用 JAR。

  • Spark Submit:在 [ 參數 ] 文本框中,指定主要類別、連結庫 JAR 的路徑,以及格式化為字元串 JSON 數位的所有自變數。 下列範例會設定spark-submit工作,以從Apache Spark範例執行 DFSReadWriteTest

    ["--class","org.apache.spark.examples.DFSReadWriteTest","dbfs:/FileStore/libraries/spark_examples_2_12_3_1_1.jar","/discover/databricks-datasets/README.md","/FileStore/examples/output/"]
    

    重要

    Spark-submit 工作有數個限制:

    • 您只能在新的叢集上執行spark-submit工作。
    • Spark-submit 不支援叢集自動調整。 若要深入瞭解自動調整,請參閱 叢集自動調整
    • Spark-submit 不支援 Databricks Utilities (dbutils) 參考。 若要使用 Databricks 公用程式,請改用 JAR 工作。
    • 如果您使用已啟用 Unity 目錄的叢集,只有在叢集使用指派 的存取模式時,才支援 spark-submit。 不支援共用存取模式。
    • Spark 串流作業不應該將並行執行上限設定為大於 1。 串流作業應該設定為使用cron表達式 "* * * * * ?" 執行 (每分鐘)。 因為串流工作會持續執行,所以它一律應該是作業中的最終工作。
  • Python 腳本:在 [來源] 下拉功能表中,選取 Python 腳本的位置、本機工作區中的腳本工作區、位於 DBFS 上的腳本的 DBFSGit 提供者位於 Git 存放庫中的腳本。 在 [ 路徑] 文字框中,輸入 Python 腳本的路徑:

    工作區:在 [ 選取 Python 檔案 ] 對話框中,流覽至 Python 腳本,然後按兩下 [ 確認]。

    DBFS:在 DBFS 或雲端記憶體上輸入 Python 腳本的 URI,例如 dbfs:/FileStore/myscript.py

    Git 提供者:按兩下 [編輯 ],然後輸入 Git 存放庫資訊。 請參閱 從遠端 Git 存放庫使用 Python 程式代碼。

  • Delta Live Tables Pipeline:在 [管線] 下拉功能表中,選取現有的 Delta Live Tables 管線。

    重要

    您只能搭配管線工作使用觸發的 管線 。 工作工作不支持連續管線。 若要深入瞭解觸發和連續管線,請參閱 連續與觸發的管線執行

  • Python Wheel:在 [ 套件名稱] 文字框中,輸入要匯入的套件,例如 myWheel-1.0-py2.py3-none-any.whl。 在 [ 進入點 ] 文本框中,輸入啟動 Python 滾輪時要呼叫的函式。 按兩下 [相依連結庫] 底下的 [新增],以新增執行工作所需的連結庫。

  • SQL:在 [SQL 工作] 下拉功能表中,選取 [查詢]、[儀錶板]、[警示] 或 [檔案]。

    注意

    查詢:在 [ SQL 查詢 ] 下拉功能表中,選取工作執行時要執行的查詢。

    儀錶板:在 [ SQL 儀錶板 ] 下拉功能表中,選取工作執行時要更新的儀錶板。

    警示:在 [ SQL 警示] 下拉功能表中,選取要觸發評估的警示。

    檔案:若要使用位於 Azure Databricks 工作區資料夾中的 SQL 檔案,請在 [來源] 下拉功能表中選取 [工作區],使用檔案瀏覽器尋找 SQL 檔案,單擊檔名,然後按兩下 [確認]。 若要使用位於遠端 Git 存放庫的 SQL 檔案,請選取 [Git 提供者],按兩下 [編輯 ] 或 [新增 Git 參考 ],然後輸入 Git 存放庫的詳細數據。 請參閱 從遠端 Git 存放庫使用 SQL 查詢。

    在 [ SQL 倉儲 ] 下拉功能表中,選取無伺服器或 Pro SQL 倉儲來執行工作。

  • dbt:如需設定 dbt 工作的詳細範例,請參閱 在 Azure Databricks 作業 中使用 dbt 轉換。

  • 執行作業:在 [作業] 下拉功能表中,選取工作要執行的作業。 若要搜尋要執行的作業,請開始在 [作業 ] 功能表中輸入作業名稱。

    重要

    使用 Run Job 巢狀三個以上的 Run Job 工作的工作或作業時,您不應該建立具有迴圈相依性的作業。 迴圈相依性是 Run Job 直接或間接觸發彼此的工作。 例如,作業 A 會觸發作業 B 和作業 B 觸發作業 A。Databricks 不支援具有迴圈相依性的作業,或巢狀超過三 Run Job 個工作,而且未來版本可能不允許執行這些作業。

  • If/else:若要瞭解如何使用工作 If/else condition ,請參閱 使用 If/else 條件工作將分支邏輯新增至您的作業。

將參數傳遞至 Azure Databricks 作業工作

您可以將參數傳遞至許多作業工作類型。 每個工作類型都有不同的格式設定和傳遞參數的需求。

若要存取目前工作的相關信息,例如工作名稱,或傳遞作業工作之間目前執行的內容,例如作業的開始時間或目前作業執行的標識符,請使用 動態值參考。 若要檢視可用的動態值參考清單,請按兩下 [ 瀏覽動態值]。

如果在 工作所屬的作業上設定作業參數 ,當您新增工作參數時,就會顯示這些參數。 如果作業和工作參數共用索引鍵,則作業參數會優先使用。 如果您嘗試新增工作參數與作業參數相同的索引鍵,UI 中會顯示警告。 若要將作業參數傳遞至未設定索引鍵/值參數的工作,例如 JARSpark Submit 工作,請將 自變數格式化為 {{job.parameters.[name]}},並將 取代[name]key為 識別參數的 。

  • 筆記本:按兩下 [ 新增 ],並指定要傳遞至工作之每個參數的索引鍵和值。 當您使用 [使用不同的參數執行作業] 選項,手動執行工作時,您可以覆寫或新增其他參數 。 參數會設定參數索引鍵所指定的筆記本小工具

  • JAR:使用 JSON 格式的字串數位指定參數。 這些字串會當做自變數傳遞至主要類別的主要方法。 請參閱 設定 JAR 作業參數

  • Spark Submit:參數會指定為 JSON 格式的字串陣列。 符合 Apache Spark spark-submit 慣例,將 JAR 路徑傳遞至主要類別的主要方法之後的參數。

  • Python Wheel:在 [ 參數 ] 下拉功能表中,選取 [位置自變數 ] 以輸入參數作為 JSON 格式的字串陣列,或選取 [關鍵詞自變數 > ][新增 ] 以輸入每個參數的索引鍵和值。 位置自變數和關鍵詞自變數都會以命令行自變數的形式傳遞至 Python 滾輪工作。 若要查看在 Python 轉輪中封裝的 Python 腳本中讀取自變數的範例,請參閱 在 Azure Databricks 作業中使用 Python 轉輪。

  • 執行作業:輸入要傳遞至作業的每個作業參數的索引鍵和值。

  • Python 文稿:使用 JSON 格式的字串陣列來指定參數。 這些字串會以自變數的形式傳遞,而且可以使用 Python 中的 argparse 模組來讀取為位置自變數或剖析。 若要查看在 Python 腳本中讀取位置自變數的範例,請參閱 步驟 2:建立腳本以擷取 GitHub 數據

  • SQL:如果您的工作執行 參數化查詢參數化儀表板,請在提供的文字框中輸入參數的值。

複製工作路徑

某些工作類型,例如筆記本工作,可讓您將路徑複製到工作原始碼:

  1. 按兩下 [工作] 索引標籤。
  2. 選取包含要複製路徑的工作。
  3. 按兩下 Jobs Copy Icon 工作路徑旁的 ,將路徑複製到剪貼簿。

從現有的作業建立作業

您可以藉由複製現有的作業,快速建立新的作業。 複製作業會建立作業的相同複本,但作業標識符除外。 在作業的頁面上,按兩下 作業名稱旁的 [更多... ],然後從下拉功能表中選取 [ 複製 ]。

從現有工作建立工作

您可以藉由複製現有的工作,快速建立新的工作:

  1. 在作業的頁面上,按兩下 [ 工作] 索引標籤。
  2. 選取要複製的工作。
  3. 按兩下 Jobs Vertical Ellipsis 並選取 [ 複製工作]。

刪除作業

若要刪除作業,請在作業的頁面上,按下 作業名稱旁的 [更多... ],然後從下拉功能表中選取 [ 刪除 ]。

刪除工作

若要刪除工作:

  1. 按兩下 [工作] 索引標籤。
  2. 選取要刪除的工作。
  3. 按兩下 Jobs Vertical Ellipsis 並選取 [ 移除工作]。

執行作業

  1. 按兩下 Jobs Icon提要欄位中的 [工作流程 ]。
  2. 選取作業,然後按兩下 [ 執行] 索引標籤。您可以立即執行作業,或排程作業稍後執行。

如果作業中有一或多個工作失敗,您可以重新執行不成功的工作子集。 請參閱 重新執行失敗和略過的工作

立即執行作業

若要立即執行作業,請按下 Run Now Button

提示

您可以按下 [立即執行] 來執行具有筆記本工作的作業測試回合。 如果您需要變更筆記本,請在編輯筆記本之後再次按兩下 [立即 執行] 會自動執行新版本的筆記本。

使用不同的參數執行作業

您可以使用 [立即執行] 搭配不同的參數 來重新執行具有不同參數的作業,或現有參數的不同值。

注意

如果作業參數在引進作業參數之前執行,則無法覆寫作業參數,而該作業參數會以相同的索引鍵覆寫工作參數。

  1. 按兩下 Blue Down Caret [立即執行],然後選取 [以不同的參數立即執行],或在 [作用中執行] 資料表中,按兩下 [立即執行],並使用不同的參數執行。 根據工作類型輸入新的參數。 請參閱 將參數傳遞至 Azure Databricks 作業工作
  2. 按一下執行

以服務主體身分執行作業

注意

如果您的作業使用 SQL 工作執行 SQL 查詢,則用來執行查詢的身分識別取決於每個查詢的共享設定,即使作業以服務主體的形式執行也一樣。 如果查詢設定為 Run as owner,查詢一律會使用擁有者的身分識別來執行,而不是服務主體的身分識別。 如果查詢設定為 Run as viewer,則會使用服務主體的身分識別來執行查詢。 若要深入瞭解查詢共用設定,請參閱 查詢許可權和共用設定

根據預設,作業會以作業擁有者的身分識別身分執行。 這表示作業會假設作業擁有者的許可權。 作業只能存取作業擁有者有權存取的數據和 Azure Databricks 物件。 您可以將作業執行身分的身分識別變更為 服務主體。 然後,作業會假設該服務主體的許可權,而不是擁有者。

若要變更執行 身分 設定,您必須具有作業的 CAN MANAGE 或 IS OWNER 許可權。 您可以將 [ 執行身分 ] 設定設為您自己,或設定為您擁有 服務主體使用者 角色的工作區中的任何服務主體。 如需詳細資訊,請參閱 管理服務主體作業訪問控制的角色。

注意

RestrictWorkspaceAdmins當工作區上的設定設為 ALLOW ALL時,工作區系統管理員也可以將 [執行身分] 設定變更為其工作區中的任何使用者。 若要限制工作區系統管理員只將 [執行身分] 設定變更為他們擁有服務主體使用者角色的本身或服務主體,請參閱限制工作區管理員

若要變更執行身分欄位,請執行下列動作:

  1. 在提要欄位中,按兩下 [Jobs Icon工作流程]。
  2. 在 [ 名稱] 資料行中,按兩下作業名稱。
  3. 在 [作業詳細數據] 側邊面板中,按兩下 [執行身分] 字段旁的鉛筆圖示。
  4. 搜尋並選取服務主體。
  5. 按一下 [檔案] 。

您也可以使用工作區服務主體 API 列出您具有 使用者 角色的服務主體。 如需詳細資訊,請參閱 列出您可以使用的服務主體。

依排程執行作業

您可以使用排程,在指定的時間和期間自動執行 Azure Databricks 作業。 請參閱 新增作業排程

執行連續作業

您可以確定一律有作用中的作業執行。 請參閱 執行連續作業

當新檔案送達時執行作業

若要在新檔案抵達 Unity 目錄外部位置或磁碟區時觸發作業執行,請使用 檔案抵達觸發程式

如果我的作業因為並行限制而無法執行,該怎麼辦?

若要防止因為並行限制而略過作業的執行,您可以啟用作業的佇列。 啟用佇列時,如果作業執行無法使用資源,則執行會排入佇列最多 48 小時。 當容量可用時,作業執行會取消佇列並執行。 佇列執行會顯示在 作業 的執行 清單中,以及最近的作業執行清單

達到下列其中一個限制時,執行會排入佇列:

  • 工作區中的並行作用中執行上限。
  • 工作區中執行的最大並行 Run Job 工作。
  • 作業的並行執行上限。

佇列是作業層級屬性,只會針對該作業執行佇列。

若要啟用佇列,請按下 [作業詳細數據] 側面板中的 [佇列] 切換。