創建、運行和管理數據作業

作業是在Databricks集群中運行非交互代碼的一種方法。例如,您可以交互地或按計劃運行提取、轉換和加載(ETL)工作負載。還可以交互式地在筆記本用戶界麵

您可以使用UI、CLI或通過調用Jobs API來創建和運行作業。您可以使用UI或API修複並重新運行失敗或取消的作業。您可以使用UI、CLI、API和電子郵件通知監視作業運行結果。本文主要討論如何使用UI執行作業任務。關於其他方法,請參見喬布斯CLI而且喬布斯API 2.1

您的作業可以由單個任務組成,也可以是具有複雜依賴關係的大型多任務工作流。Databricks管理所有作業的任務編排、集群管理、監視和錯誤報告。您可以通過一個易於使用的調度係統立即或定期運行作業。

您可以在JAR、Databricks筆記本、Delta Live Tables管道或用Scala、Java或Python編寫的應用程序中實現任務。也支持遺留Spark提交應用程序。可以通過指定任務之間的依賴關係來控製任務的執行順序。您可以配置任務以順序或並行運行。下圖說明了一個工作流程:

  1. 攝取原始點擊流數據並執行處理以會話記錄。

  2. 獲取訂單數據並將其與會話化的點擊流數據連接起來,以創建用於分析的準備好的數據集。

  3. 從準備好的數據中提取特性。

  4. 並行執行任務以保持特征並訓練機器學習模型。

    例子多任務的工作流程

要使用Databricks作業創建第一個工作流,請參見快速入門

重要的

  • 您隻能在數據科學與工程工作空間或機器學習工作空間中創建工作。

  • 一個工作區限製為1000個並發作業運行。一個429許多請求當您請求無法立即啟動的運行時,返回響應。

  • 一個工作空間在一小時內可以創建的作業數量限製為10000個(包括“運行提交”)。這個限製也會影響REST API和筆記本工作流程創建的工作。

創建一個工作

  1. 做以下其中一項:

    • 點擊工作圖標工作流在側邊欄中單擊創建工作按鈕

    • 在側邊欄中,單擊創建圖標創建並選擇工作從菜單中。

    任務選項卡將顯示創建任務對話框。

    創建任務的屏幕
  2. 取代為你的工作添加一個名字……寫上你的工作名稱。

  3. 中為任務輸入名稱任務名稱字段。

  4. 指定要運行的任務類型。在類型下拉,選擇筆記本JAR火花提交Python,或管道

    • 筆記本:在下拉,選擇放置筆記本的位置;要麼工作空間筆記本電腦位於Databricks工作空間文件夾或Git提供者對於位於遠程Git存儲庫中的筆記本。

      工作空間:使用文件瀏覽器找到筆記本,點擊筆記本名稱,點擊確認

      Git提供者:點擊編輯並輸入Git存儲庫信息。看到在遠程Git存儲庫中使用筆記本運行作業

    • JAR:指定主類.使用包含main方法的類的完全限定名,例如:org.apache.spark.examples.SparkPi.然後單擊添加依賴庫添加運行任務所需的庫。這些庫中必須有一個包含主類。

      要了解關於JAR任務的更多信息,請參見JAR的工作

    • 火花提交:在參數文本框中,指定主類、庫JAR的路徑和所有參數,格式化為JSON字符串數組。下麵的示例配置spark-submit任務來運行DFSReadWriteTest來自Apache Spark的例子:

      ”——階級”“org.apache.spark.examples.DFSReadWriteTest”“dbfs: / FileStore /圖書館/ spark_examples_2_12_3_1_1.jar”“/ dbfs / databricks-datasets / README.md”“/ FileStore / /輸出例子/”]

      重要的

      有幾個限製spark-submit任務:

      • 您隻能在新的集群上運行spark-submit任務。

      • Spark-submit不支持集群自動伸縮。要了解關於自動縮放的更多信息,請參見集群自動定量

      • 不支持Spark-submit磚公用事業.要使用Databricks Utilities,請使用JAR任務。

    • Python:在路徑文本框,輸入一個Python腳本在DBFS或雲存儲上的URI;例如,dbfs: / FileStore / myscript.py

    • 管道:在管道下拉菜單,選擇已存在的三角洲生活表管道。

      重要的

      方法隻能使用觸發管道管道的任務。作業任務不支持連續管道。要了解觸發管道和連續管道的更多信息,請參見連續和觸發管道

    • Python輪:在包名文本框,輸入要導入的包,例如:mywheel - 1.0 - py2.py3 any.whl——沒有.在入口點文本框中,輸入啟動滾輪時要調用的函數。點擊添加依賴庫添加運行任務所需的庫。

    • 印度生物技術部:看在Databricks作業中使用dbt查看配置DBT任務的詳細示例。

      預覽

      dbt任務完成公共預覽

  5. 配置運行任務的集群。在集群下拉,選擇新工作的集群現有通用的集群

    • 新工作的集群:點擊編輯集群下拉列表,並完成集群配置

    • 現有通用的集群:選擇中已存在的集群集群下拉。要在新頁麵中打開集群,請單擊外部鏈接集群名稱和描述右側的圖標。

    要了解關於選擇和配置集群以運行任務的更多信息,請參見集群配置建議

  6. 您可以為任務傳遞參數。每種任務類型對格式化和傳遞參數有不同的要求。

    • 筆記本:點擊添加並指定傳遞給任務的每個參數的鍵和值。控件手動運行任務時,可以重寫或添加其他參數運行具有不同參數的作業選擇。參數設置筆記本電腦部件由參數的鍵指定。使用任務參數變量作為參數值的一部分傳遞一組有限的動態值。

    • JAR:使用json格式的字符串數組來指定參數。這些字符串作為參數傳遞給main類的main方法。看到配置JAR作業參數

    • 火花提交參數被指定為json格式的字符串數組。符合Apache火花spark-submit按照慣例,JAR路徑之後的參數被傳遞給main類的main方法。

    • Python:使用json格式的字符串數組來指定參數。這些字符串作為參數傳遞,可以使用argparse在Python模塊。

    • Python輪:在參數下拉,選擇位置參數以json格式的字符串數組形式輸入參數,或選擇關鍵字參數>添加輸入每個參數的鍵和值。位置參數和關鍵字參數都作為命令行參數傳遞給Python wheel任務。

  7. 訪問其他選項,包括依賴庫、重試策略和超時,點擊高級選項.看到編輯一個任務

  8. 點擊創建

  9. 若要設置作業的時間表,請單擊編輯日程工作細節麵板。看到安排一個工作

  10. 若要允許同一作業的多個並發運行,請單擊編輯並發運行工作細節麵板。看到最大並發運行

  11. 若要指定接收作業事件通知的電子郵件地址,請單擊編輯通知工作細節麵板。看到通知

  12. 若要有選擇地控製作業的權限級別,請單擊編輯權限工作細節麵板。看到控製對作業的訪問

單擊,可以添加其他任務添加任務按鈕在您剛剛創建的任務下麵。如果配置了共享集群選項,則提供了共享集群選項新工作的集群對於上一個任務。還可以在創建或編輯任務時為每個任務配置集群。要了解關於選擇和配置集群以運行任務的更多信息,請參見集群配置建議

運行工作

  1. 點擊工作圖標工作流在側邊欄。

  2. 選擇一個作業,然後單擊運行選項卡。您可以立即運行作業,也可以安排作業稍後運行。

如果具有多個任務的作業中的一個或多個任務不成功,可以重新運行不成功任務的子集。看到修複不成功的作業運行

立即運行作業

若要立即運行作業,請單擊現在運行按鈕

提示

可以通過單擊使用筆記本任務執行作業的測試運行現在運行.如果您需要對筆記本進行更改,請單擊現在運行再次編輯後的筆記本會自動運行新版本的筆記本。

運行具有不同參數的作業

您可以使用現在運行不同的參數使用不同參數或現有參數的不同值重新運行作業。

  1. 點擊藍色向下插入符號旁邊現在運行並選擇現在運行不同的參數或者,在活躍的運行表,點擊現在運行不同的參數.根據任務類型輸入新的參數。

    • 筆記本:參數可以以鍵值對或JSON對象的形式輸入。提供的參數與觸發運行的默認參數合並。可以使用此對話框設置的值小部件

    • JAR而且spark-submit:可以輸入一列參數或JSON文檔。如果刪除密鑰,則使用默認參數。您還可以添加任務參數變量運行。

  2. 點擊運行

修複不成功的作業運行

通過隻運行失敗任務的子集和任何依賴任務,可以修複失敗或取消的多任務作業。由於不會重新運行成功的任務和任何依賴於它們的任務,因此該特性減少了從失敗的作業運行中恢複所需的時間和資源。

可以在修複作業運行之前更改作業或任務設置。不成功的任務將使用當前作業和任務設置重新運行。例如,如果您更改了筆記本或集群設置的路徑,任務將使用更新的筆記本或集群設置重新運行。

您可以查看所有任務運行的曆史任務運行細節頁麵。

請注意

  • 如果一個或多個任務共享一個作業集群,修複運行將創建一個新的作業集群;例如,如果最初的運行使用了作業集群my_job_cluster,第一次修複運行將使用新的作業集群my_job_cluster_v1,允許您輕鬆地查看初始運行和任何修複運行所使用的集群和集群設置。的設置my_job_cluster_v1的當前設置是否相同my_job_cluster

  • 隻有編配兩個或多個任務的作業才支持修複。

  • 持續時間中顯示的運行選項卡包括從第一次運行開始到最後一次修複運行結束的時間。例如,如果一個運行失敗了兩次,而在第三次運行中成功了,則持續時間包括所有三次運行的時間。

修複失敗的作業運行:

  1. 點擊工作圖標工作在側邊欄。

  2. 的名字列中,單擊作業名稱。的運行選項卡顯示活動運行和已完成的運行,包括任何未成功的運行。

  3. 控件中未成功運行的鏈接開始時間列的已完成的測試(過去60天)表格的工作運行細節頁麵出現。

  4. 點擊修複運行.的修理工作運行對話框出現,列出所有未成功的任務和將重新運行的任何相關任務。

  5. 若要為要修複的任務添加或編輯參數,請在修理工作運行對話框。中輸入的參數修理工作運行對話框覆蓋現有值。在後續的修複運行中,可以通過清除鍵和值將參數返回到其原始值修理工作運行對話框。

  6. 點擊修複運行修理工作運行對話框。

查看任務運行曆史

查詢任務的運行曆史記錄,包括成功和失敗的運行記錄。

  1. 控件上單擊一個任務工作運行細節頁麵。的任務運行細節頁麵出現。

  2. 在運行曆史記錄下拉菜單中選擇運行的任務。

安排一個工作

為工作製定時間表:

  1. 點擊編輯日程工作細節麵板,並設置計劃類型計劃

  2. 配置時間段、開始時間和時區。可選的選擇顯示Cron語法複選框來顯示和編輯其中的計劃石英Cron語法

    請注意

    • 不管cron表達式中的秒配置是多少,Databricks強製作業調度觸發的後續運行之間的最小間隔為10秒。

    • 您可以選擇遵守夏令時或UTC的時區。如果您選擇了一個遵守日光節約時間的區域,一個小時的工作將被跳過或可能看起來不火一兩個小時夏令時開始或結束時.要以每小時(絕對時間)運行,請選擇UTC。

    • 作業調度器不適合低延遲的作業。由於網絡或雲問題,作業運行有時可能會延遲幾分鍾。在這些情況下,計劃的作業將在服務可用時立即運行。

  3. 點擊保存

暫停並恢複作業計劃

要暫停作業,您可以:

  • 點擊暫停工作細節麵板。

  • 點擊編輯日程工作細節麵板,並設置計劃類型手冊(停頓了一下)

若要恢複暫停的作業計劃,請設置計劃類型計劃

視圖的工作

點擊工作圖標工作流在側邊欄。喬布斯列表出現了。Jobs頁麵列出了所有已定義的作業、集群定義、調度(如果有的話)以及上次運行的結果。

請注意

如果你有增加工作的限製為該工作空間啟用後,jobs列表中隻顯示25個作業,以改善頁麵加載時間。使用左箭頭和右箭頭可以翻頁完整的作業列表。

您可以在jobs列表中篩選作業:

  • 使用關鍵字。如果為該工作空間啟用了增加的作業限製特性,則隻支持通過關鍵字搜索名稱、作業ID和作業標記字段。

  • 隻選擇你擁有的工作。

  • 選擇您具有訪問權限的所有作業。訪問此過濾器需要這樣做工作訪問控製啟用。

  • 使用標簽.若要搜索僅用一個鍵創建的標記,請在搜索框中鍵入該鍵。要搜索使用鍵和值創建的標記,可以通過鍵、值或鍵和值進行搜索。例如,對於帶有鍵的標記部門和價值金融,你可以搜索部門金融尋找匹配的工作。要同時搜索鍵和值,請輸入以冒號分隔的鍵和值;例如,部門:財務

還可以單擊任何列標題,按該列對作業列表進行排序(降序或升序)。當增加作業限製功能啟用時,隻能按的名字工作ID,或創建通過.默認排序是by的名字以升序排序。

視圖為作業運行

  1. 點擊工作圖標工作流在側邊欄。

  2. 的名字列中,單擊作業名稱。的運行選項卡將顯示活動運行和已完成運行的表格。

工作運行表

單擊,切換到矩陣視圖矩陣.矩陣視圖顯示作業的運行曆史,包括每個作業任務。

工作運行矩陣的行顯示運行的總持續時間和運行的狀態。鼠標懸停在工具欄上,可以查看運行的詳細信息,包括開始時間、持續時間和狀態工作運行行。

中的每個單元格任務行表示任務和任務的相應狀態。將鼠標懸停在任務的單元格上,可以查看每個任務的詳細信息,包括開始時間、持續時間、集群和狀態。

作業運行和任務運行條以不同的顏色表示運行的狀態。成功運行為綠色,不成功運行為紅色,跳過運行為粉色。各個作業運行和任務運行條的高度提供了運行持續時間的可視化指示。

工作運行矩陣

Databricks維護作業運行的曆史記錄,最長可達60天。如果您需要保留作業運行,Databricks建議您在結果過期之前導出它們。有關更多信息,請參見導出作業運行結果

查看作業運行詳細信息

作業運行詳細信息頁麵包含作業輸出和指向日誌的鏈接,其中包括關於作業運行中每個任務成功或失敗的信息。控件訪問作業運行詳細信息運行這份工作的賬單。控件中查看作業運行詳細信息運行選項卡中運行的鏈接運行列的已完成的測試(過去60天)表格回到運行選項卡,單擊工作ID價值。

單擊某一任務,可查看任務運行詳情,包括:

  • 運行任務的集群

    • 該任務的Spark UI

    • 任務日誌

    • 任務的指標

單擊工作ID返回的運行這份工作的賬單。單擊工作運行ID值返回作業運行細節。

查看最近的作業運行情況

您可以在您可以訪問的工作空間中查看所有作業的當前運行和最近完成的運行列表,包括由外部編排工具(如Apache氣流或Azure數據工廠)啟動的運行。查詢最近運行的作業列表。

  1. 點擊工作圖標工作流在側邊欄。喬布斯列表出現了。

  2. 單擊工作運行選項卡。將出現Job runs列表。

工作運行列表顯示:

  • 跑步的開始時間。

  • 與運行關聯的作業的名稱。

  • 作業運行時的用戶名。

  • 運行是由作業調度或API請求觸發的,還是手動啟動的。

  • 當前運行的作業所花費的時間,或完成運行的總運行時間。

  • 運行的狀態等待運行跳過成功失敗的終止終止內部錯誤定時取消了取消,或等待重試

查看工作運行細節,單擊中的鏈接開始時間跑步的專欄。要查看作業的詳細信息,請單擊工作列。

導出作業運行結果

您可以導出所有作業類型的筆記本運行結果和作業運行日誌。

導出筆記本運行結果

您可以通過導出作業的結果來持久化作業運行。對於筆記本作業,您可以出口一個渲染的筆記本,可以稍後進口進入你的Databricks工作區。

導出單個任務的筆記本運行結果:

  1. 在作業詳細信息頁麵,單擊查看詳細信息的運行鏈接運行列的已完成的測試(過去60天)表格

  2. 點擊導出到HTML

導出多任務作業的筆記本運行結果:

  1. 在作業詳細信息頁麵,單擊查看詳細信息的運行鏈接運行列的已完成的測試(過去60天)表格

  2. 單擊要導出的筆記本任務。

  3. 點擊導出到HTML

導出作業運行日誌

您還可以導出作業運行的日誌。您可以設置您的作業,通過job API自動向DBFS或S3交付日誌。看到new_cluster.cluster_log_conf對象傳入的請求體中的創建新工作操作(帖子/ /創建工作)。

編輯的工作

一些配置選項可用於作業,其他選項可用於個人任務.例如,隻能在作業上設置最大並發運行次數,而必須為每個任務定義參數。

修改作業的配置。

  1. 點擊工作圖標工作流在側邊欄。

  2. 的名字列中,單擊作業名稱。

側麵麵板顯示工作細節.你可以改變時間表、集群配置、通知、並發運行的最大數量,以及添加或更改標記。如果工作訪問控製,您還可以編輯作業權限。

標簽

要向作業添加標簽或key:value屬性,可以添加標簽當你編輯作業時。控件中的作業可以使用標記進行篩選工作列表;例如,你可以使用部門標記過濾屬於特定部門的所有作業。

請注意

由於作業標記不是用來存儲敏感信息(如個人身份信息或密碼)的,所以Databricks建議隻對非敏感值使用標記。

標記還傳播到作業運行時創建的作業集群,從而允許您在現有的作業中使用標記集群監控

單擊,可添加或編輯標簽+標簽工作細節側板。您可以將標記添加為鍵和值,或者標簽。要添加標簽,請在關鍵字段,然後離開價值字段是空的。

集群

若要查看與集群關聯的任務,請將鼠標懸停在側麵板中的集群上。若要更改所有關聯任務的集群配置,請單擊配置在集群。若要為所有關聯任務配置新的集群,請單擊交換在集群。

最大並發運行

此作業的最大並行運行次數。如果作業在嚐試開始新的運行時已經達到其最大活動運行數,則Databricks會跳過運行。將該值設置為高於默認值1的值,以並發地執行同一作業的多次運行。這很有用,例如,如果您頻繁地觸發作業計劃,並希望允許連續運行相互重疊,或者希望觸發多次運行,但輸入參數不同。

通知

您可以添加一個或多個電子郵件地址,以便在作業開始、完成或失敗時通知:

  1. 點擊編輯通知

  2. 點擊添加

  3. 輸入一個電子郵件地址,然後單擊要發送到該地址的每種通知類型的複選框。

  4. 單擊,可以輸入其他郵件地址進行通知添加

  5. 如果不想收到跳過作業運行的通知,請單擊複選框。

  6. 點擊確認

集成這些電子郵件通知與您最喜歡的通知工具,包括:

控製對作業的訪問

作業訪問控製使作業所有者和管理員能夠對其作業授予細粒度權限。作業所有者可以選擇哪些其他用戶或組可以查看作業的結果。所有者還可以選擇由誰來管理作業運行(現在運行和取消運行權限)。

看到工作訪問控製獲取詳細信息。

編輯一個任務

設置任務配置選項。

  1. 點擊工作圖標工作流在側邊欄。

  2. 的名字列中,單擊作業名稱。

  3. 單擊任務選項卡。

任務依賴關係

控件定義作業中任務的執行順序取決於下拉。您可以將此字段設置為作業中的一個或多個任務。

編輯任務依賴關係

請注意

取決於如果作業隻包含一個任務,則不可見。

配置任務依賴關係會創建一個任務執行的有向無環圖(DAG),這是表示任務調度器執行順序的一種常見方式。例如,考慮以下由四個任務組成的工作:

任務依賴關係示例圖
  • 任務1是根任務,不依賴於任何其他任務。

  • Task 2和Task 3依賴於Task 1先完成。

  • 最後,任務4依賴於任務2和任務3的成功完成。

Databricks在運行下遊任務之前先運行上遊任務,盡可能多地並行運行上遊任務。下麵的圖表說明了這些任務的處理順序:

任務依賴項示例流程

單個任務配置選項

單個任務有以下配置選項:

集群

要配置任務運行的集群,請單擊集群下拉。可以對共享作業集群進行編輯,但如果共享作業集群仍被其他任務使用,則不能刪除共享作業集群。

要了解關於選擇和配置集群以運行任務的更多信息,請參見集群配置建議

依賴庫

在任務運行之前,將在集群上安裝依賴庫。必須設置所有任務依賴項,以確保在運行開始之前安裝它們。

若要添加依賴庫,請單擊高級選項並選擇添加依賴庫打開添加依賴庫選擇器。遵循庫的依賴關係用於指定依賴項。

任務參數變量

可以將模板變量作為任務參數的一部分傳遞給作業任務。當作業任務運行時,這些變量將被替換為適當的值。您可以使用任務參數值來傳遞作業運行的上下文,例如運行ID或作業的開始時間。

當作業運行時,用雙花括號括起來的任務參數變量將被替換並附加到作為值的一部分的可選字符串值。例如,傳遞一個名為MyJobId值為my-job-6對於任何作業ID 6的運行,添加以下任務參數:

{“MyJobID”“我的工作- {{job_id}}”

雙花括號的內容不作為表達式計算,因此不能在雙花括號內執行操作或函數。空格沒有在花括號中去掉,所以{{job_id}}不會被評估。

支持以下任務參數變量:

變量

描述

示例值

{{job_id}}

分配給作業的唯一標識符

1276862

{{run_id}}

分配給作業運行的唯一標識符

3447843

{{start_date}}

任務運行開始的日期。格式為UTC時區的yyyy-MM-dd。

2021-02-15

{{start_time}}

創建並準備好集群後,運行開始執行的時間戳。返回的格式是UTC時區自UNIX紀元以來的毫秒數System.currentTimeMillis ()

1551622063030

{{task_retry_count}}

如果第一次嚐試失敗,嚐試運行任務的重試次數。第一次嚐試時,該值為0,並隨著每次重試而遞增。

{{parent_run_id}}

分配給運行具有多個任務的作業的唯一標識符。

3447835

{{task_key}}

分配給任務的唯一名稱,該任務是具有多個任務的作業的一部分。

“clean_raw_data”

您可以在任何任務中設置這些變量創建一個工作編輯的工作,或運行具有不同參數的作業

超時

一項工作的最長完成時間。如果任務沒有在此時間內完成,則Databricks將其狀態設置為“Timed Out”。

重試

確定重試失敗運行的時間和次數的策略。若要設置任務的重試次數,請單擊高級選項並選擇編輯重試策略.重試間隔從失敗的運行開始到隨後的重試運行之間計算,以毫秒為單位。

請注意

如果同時配置超時而且重試,該超時將應用於每次重試。

克隆一個工作

通過克隆現有作業,可以快速創建新作業。克隆作業將創建一個完全相同的作業副本,除了作業ID。在作業頁麵上單擊更多…在工作名稱旁邊選擇克隆從下拉菜單。

克隆一個任務

通過克隆已有任務,可以快速創建新任務:

  1. 在作業的頁麵上,單擊任務選項卡。

  2. 選擇要克隆的任務。

  3. 點擊喬布斯垂直省略並選擇克隆的任務

刪除一個工作

在作業頁麵單擊,刪除作業更多…在工作名稱旁邊選擇刪除從下拉菜單。

刪除一個任務

刪除任務。

  1. 單擊任務選項卡。

  2. 選擇需要刪除的任務。

  3. 點擊喬布斯垂直省略並選擇刪除任務

複製任務路徑

將路徑複製到任務,例如筆記本路徑:

  1. 單擊任務選項卡。

  2. 選擇包含複製路徑的任務。

  3. 點擊工作副本圖標在任務路徑旁邊,將路徑複製到剪貼板。

在遠程Git存儲庫中使用筆記本運行作業

預覽

這個特性在公共預覽

您可以使用位於遠程Git存儲庫中的筆記本運行作業。該特性簡化了生產作業的創建和管理,並實現了連續部署的自動化:

  • 您不需要在Databricks中創建單獨的生產回購,為它管理權限,並保持更新。

  • 您可以防止對生產作業的無意更改,例如生產repo中的本地編輯或切換分支的更改。

  • 作業定義過程在遠程存儲庫中隻有一個真實源。

要在遠程Git存儲庫中使用筆記本,您必須設置Git與Databricks Repos的集成

使用位於遠程Git倉庫中的筆記本創建一個任務:

  1. 類型下拉,選擇筆記本

  2. 下拉,選擇Git提供者.的Git信息對話框出現了。

  3. Git信息對話框中,輸入存儲庫的詳細信息。

    路徑,輸入到筆記本位置的相對路徑,例如etl /筆記本電腦/

    當您輸入相對路徑時,不要以/./並且不要包括筆記本文件擴展名,例如. py

多任務作業中的其他notebook任務通過以下方式之一引用遠程存儲庫中的同一個提交:

  • $分支/頭git_branch設置

  • 美元的標記git_tag設置

  • 的價值git_commit

在多任務作業中,不能有一個任務使用本地筆記本,而另一個任務使用遠程存儲庫。這個限製不適用於非筆記本任務。

最佳實踐

集群配置建議

在操作作業時,集群配置非常重要。下麵提供了關於選擇和配置作業集群的一般指導,以及針對特定作業類型的建議。

使用共享作業集群

要對協調多個任務的作業優化資源使用,請使用共享作業集群。共享作業群集允許運行同一作業中的多個任務重用群集。可以使用單個作業集群運行作業的所有任務,也可以使用針對特定工作負載優化的多個作業集群。使用共享作業集群:

  1. 選擇新工作的集群創建任務並完成集群配置

  2. 向作業添加任務時選擇新集群,或創建新作業集群。選擇時配置的任何集群新工作的集群可用於作業中的任何任務。

共享作業集群的作用域僅限於單個作業運行,不能用於其他作業或相同作業的運行。

不能在共享作業集群配置中聲明庫。必須在任務設置中添加依賴庫。

為您的作業選擇正確的集群類型

  • 新工作的集群是作業或任務運行的專用集群。共享作業集群將在第一個使用該集群的任務啟動時創建並啟動,並在使用該集群的最後一個任務完成後終止。集群不會在空閑時終止,而是在所有使用它的任務完成後終止。如果共享作業集群失敗或在所有任務完成之前被終止,則會創建一個新的集群。作用域為單個任務的集群在任務啟動時創建並啟動,在任務完成時終止。在生產環境中,Databricks建議使用新的共享集群或任務範圍集群,以便每個作業或任務在完全隔離的環境中運行。

  • 當您在一個新的集群上運行一個任務時,該任務將被視為一個數據工程(任務)工作負載,受任務工作負載定價的影響。當您在現有的通用集群上運行任務時,該任務將被視為數據分析(通用)工作負載,受通用工作負載定價的影響。

  • 如果您選擇終止的現有集群,並且作業所有者已可以重新啟動許可,當作業被調度運行時,Databricks啟動集群。

  • 現有的通用集群最適合執行更新等任務指示板定期。

使用池可以減少集群啟動時間

為了減少新作業集群的開始時間,可以創建一個並將作業的集群配置為使用池。

自動可用性區域

要利用自動可用分區(Auto-AZ)的優勢,必須使用集群API,設置awsattributes.zone_id“汽車”.看到可用性區域

筆記本的工作技巧

筆記本單元的總輸出(所有筆記本單元的組合輸出)受20MB大小的限製。此外,單個單元格的輸出受8MB大小的限製。如果總單元輸出大小超過20MB,或者單個單元的輸出大於8MB,則取消運行並標記為失敗。

如果您需要幫助查找接近或超出限製的單元,那麼在一個通用集群上運行該筆記本並使用它筆記本自動保存技術

流媒體的任務

Spark Streaming作業的最大並發運行數不應該設置為大於1。流作業應該設置為使用cron表達式運行“*?"(每分鍾)。

因為流任務是連續運行的,所以它應該始終是作業中的最後一個任務。

JAR的工作

運行JAR作業時,請記住以下幾點:

輸出大小限製

作業輸出(例如發送到stdout的日誌輸出)受20MB大小的限製。如果總輸出的大小較大,則取消運行並標記為失敗。

要避免遇到此限製,您可以通過設置spark.databricks.driver.disableScalaOutput火花配置真正的.缺省情況下,標誌值為.該標誌控製Scala JAR作業和Scala筆記本的單元格輸出。啟用該標誌後,Spark不向客戶端返回作業執行結果。該標誌不會影響寫到集群日誌文件中的數據。建議隻對JAR作業的作業集群設置此標誌,因為它將禁用notebook結果。

使用共享SparkContext

因為Databricks是一個托管服務,可能需要修改一些代碼以確保Apache Spark作業正確運行。JAR作業程序必須使用共享SparkContextAPI來獲取SparkContext.因為Databricks初始化了SparkContext,程序調用SparkContext ()將會失敗。得到SparkContext,隻使用共享的SparkContext由磚:

瓦爾goodSparkContextSparkContextgetOrCreate()瓦爾goodSparkSessionSparkSession構建器()。getOrCreate()

在使用shared時,還有一些方法應該避免SparkContext

  • 不叫SparkContext.stop ()

  • 不叫system . exit (0)sc.stop ()在你的最後主要程序。這可能會導致未定義的行為。

使用終於嚐試工作清理塊

考慮一個包含兩部分的JAR:

  • jobBody ()它包含了工作的主要部分。

  • jobCleanup ()哪一個必須在之後執行jobBody ()函數是否成功或返回異常。

作為一個例子,jobBody ()可以創建表,並且可以使用jobCleanup ()刪除這些表。

確保調用clean up方法的安全方法是放置一個終於嚐試代碼塊:

試一試{jobBody()最後{jobCleanup()

不應該盡量清理使用sys.addShutdownHook (jobCleanup)或者下麵的代碼:

瓦爾cleanupThread線程{覆蓋def運行jobCleanup()運行時getRuntimeaddShutdownHookcleanupThread

由於在Databricks中管理Spark容器生命周期的方式,關機鉤子不能可靠地運行。

配置JAR作業參數

使用JSON字符串數組將參數傳遞給JAR作業。看到spark_jar_task對象傳入的請求體中的創建新工作操作(帖子/ /創建工作)。要訪問這些參數,請檢查字符串數組傳入主要函數。

庫的依賴關係

Spark驅動程序有某些庫依賴項不能被重寫。這些庫優先於與它們衝突的任何庫。

要獲得驅動程序庫依賴項的完整列表,請在一個筆記本中運行以下命令,該筆記本連接到同一個Spark版本的集群(或包含您想要檢查的驅動程序的集群)。

% sh ls /磚/ jar

管理庫依賴關係

在為作業創建jar文件時處理庫依賴時,一個很好的經驗法則是將Spark和Hadoop列為提供依賴關係。在Maven上,添加Spark和Hadoop作為提供的依賴項,如下所示:

< >的依賴< groupId >org.apache.spark< / groupId >< artifactId >spark-core_2.11< / artifactId ><版本>tripwire> < /版本< >範圍提供< / >範圍< / >的依賴< >的依賴< groupId >org.apache.hadoop< / groupId >< artifactId >hadoop核心< / artifactId ><版本>1.2.1 "> < /版本< >範圍提供< / >範圍< / >的依賴

sbt,添加Spark和Hadoop作為提供的依賴項,示例如下:

libraryDependencies+ =“org.apache.spark”% %“spark-core”“tripwire”“提供”libraryDependencies+ =“org.apache.hadoop”% %“hadoop核心”“1.2.1”“提供”

提示

根據你正在運行的版本,為你的依賴指定正確的Scala版本。