創建、運行和管理Databricks作業

作業是在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 Submit應用程序。您可以通過指定任務之間的依賴關係來控製任務的執行順序。可以將任務配置為按順序或並行運行。下麵的圖表說明了一個工作流:

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

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

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

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

    例子多任務的工作流程

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

重要的

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

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

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

創建一個工作

  1. 做以下任何一件事:

    • 點擊工作圖標工作流,然後單擊創建工作按鈕

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

    任務選項卡與創建任務對話框一起出現。

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

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

  4. 類型下拉菜單,選擇要運行的任務類型。

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

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

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

    • JAR:指定主類.使用包含主方法的類的完全限定名,例如,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實用程序,請使用JAR任務。

    • Python腳本:在下拉菜單,為Python腳本選擇一個位置工作空間對於本地工作區中的腳本,或DBFS對於位於DBFS或雲存儲上的腳本。在路徑文本框,輸入Python腳本的路徑:

      工作空間:在選擇Python文件對話框,瀏覽到Python腳本並單擊確認.你的劇本必須在磚回購

      DBFS:在DBFS或雲存儲上輸入Python腳本的URI;例如,dbfs: / FileStore / myscript.py

    • Delta Live表管道:在管道下拉菜單,選擇一個現有的三角洲生活表管道。

      重要的

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

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

    • SQL:在SQL任務下拉菜單,選擇查詢指示板,或警報

      請注意

      查詢:在SQL查詢下拉菜單,選擇要在任務運行時執行的查詢。在SQL倉庫下拉菜單,選擇一個無服務器SQL倉庫來運行任務。

      指示板:在SQL儀表板下拉菜單,選擇要在任務運行時更新的儀表板。在SQL倉庫下拉菜單,選擇一個無服務器SQL倉庫來運行任務。

      警報:在SQL警告下拉菜單,選擇一個警報觸發評估。在SQL倉庫下拉菜單,選擇一個無服務器SQL倉庫來運行任務。

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

      預覽

      dbt任務已經完成公共預覽

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

    • 新工作的集群:點擊編輯集群下拉菜單並完成集群配置

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

    有關選擇和配置集群以運行任務的詳細信息,請參見集群配置建議

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

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

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

    • 火花提交task:參數被指定為json格式的字符串數組。符合Apache火花spark-submit約定,JAR路徑後的參數被傳遞給主類的主方法。

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

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

  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

  • 修複僅支持編排兩個或多個任務的作業。

  • 持續時間的值。運行TAB包括第一次運行開始的時間到最近一次修複運行結束的時間。例如,如果一個運行兩次失敗,第三次運行成功,則持續時間包括所有三次運行的時間。

修複不成功的作業運行:

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

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

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

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

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

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

查看任務運行曆史

查詢任務的運行曆史,包括成功運行和不成功運行。

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

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

安排一個工作

為作業定義時間表:

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

  2. 指定時間段、開始時間和時區。可選的選擇顯示Cron語法複選框中顯示和編輯的日程安排石英Cron語法

    請注意

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

    • 您可以選擇遵循夏令時或UTC的時區。如果您選擇了一個遵守夏令時的區域,則按小時計算的工作將被跳過,或者可能在一兩個小時內看起來不工作夏令時開始或結束的時間.要在每小時(絕對時間)運行,請選擇UTC。

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

  3. 點擊保存

暫停並恢複作業計劃

要暫停作業,您可以:

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

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

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

視圖的工作

點擊工作圖標工作流在側邊欄。出現了Jobs列表。Jobs頁麵列出了所有已定義的作業、集群定義、計劃(如果有的話)和最後一次運行的結果。

請注意

如果你有增加工作的限製啟用此工作區時,僅在jobs列表中顯示25個作業,以提高頁麵加載時間。使用左右箭頭瀏覽完整的工作列表。

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

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

  • 隻選擇你擁有的工作。

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

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

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

視圖運行一個作業

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

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

工作運行表

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

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

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

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

工作運行矩陣

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

查看作業運行詳情

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

單擊任務查看任務運行的詳細信息,包括:

  • 運行任務的集群

    • 任務的Spark UI

    • 任務的日誌

    • 任務的度量

單擊工作ID的值返回運行TAB為該工作。單擊工作運行ID值返回作業運行詳細信息。

查看最近的作業運行情況

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

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

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

工作運行列表顯示:

  • 跑步的開始時間。

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

  • 作業運行時的用戶名。

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

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

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

查看工作運行細節,單擊頁中的鏈接開始時間列跑。中,單擊作業名稱可查看作業詳細信息工作列。

導出作業運行結果

可以導出所有作業類型的notebook運行結果和作業運行日誌。

導出筆記本運行結果

您可以通過導出作業運行結果來持久化作業運行。對於筆記本作業運行,可以這樣做出口一個渲染的筆記本,以後可以進口到你的Databricks工作空間。

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

  1. 在任務詳細信息頁麵上,單擊查看詳細信息的運行鏈接運行列的已完成跑步(過去60天)表格

  2. 點擊導出到HTML

導出包含多個任務的作業的筆記本運行結果。

  1. 在任務詳細信息頁麵上,單擊查看詳細信息的運行鏈接運行列的已完成跑步(過去60天)表格

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

  3. 點擊導出到HTML

導出作業運行日誌

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

編輯的工作

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

修改作業的配置。

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

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

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

標簽

若要向作業添加標簽或鍵:值屬性,可以添加標簽當您編輯作業時。中使用標記來篩選作業工作列表;例如,你可以使用a部門標記來篩選屬於特定部門的所有作業。

請注意

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

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

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

集群

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

最大並發運行

此作業的最大並行運行數。當嚐試啟動新的運行時,如果作業已經達到活動運行的最大數量,Databricks將跳過運行。將該值設置為高於默認值1的值,以並發地執行同一作業的多次運行。例如,如果您頻繁地觸發作業,並且希望允許連續的運行相互重疊,或者您希望觸發多個因輸入參數不同而不同的運行,那麼這將非常有用。

通知

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

  1. 點擊編輯通知

  2. 點擊添加

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

  4. 如果需要輸入其他郵箱地址,請單擊添加

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

  6. 點擊確認

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

控製對作業的訪問

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

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

編輯一個任務

設置任務配置選項。

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

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

  3. 單擊任務選項卡。

任務依賴關係

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

編輯任務依賴關係

請注意

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

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

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

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

  • 最後,Task 4依賴於Task 2和Task 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 epoch以來的毫秒數System.currentTimeMillis ()

1551622063030

{{task_retry_count}}

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

{{parent_run_id}}

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

3447835

{{task_key}}

分配給具有多個任務的作業的一部分的任務的惟一名稱。

“clean_raw_data”

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

超時

作業的最大完成時間。如果作業在這段時間內沒有完成,Databricks將其狀態設置為“超時”。

重試

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

請注意

如果兩者都配置超時而且重試,該超時時間適用於每次重試。

克隆一個工作

您可以通過克隆現有作業來快速創建新作業。克隆作業會創建相同的作業副本,隻是作業ID不同。在工作頁麵上,單擊更多…在作業名稱旁邊,然後選擇克隆從下拉菜單。

克隆一個任務

你可以通過克隆一個現有的任務來快速創建一個新任務:

  1. 在職位頁麵上,單擊任務選項卡。

  2. 選擇要克隆的任務。

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

刪除一個工作

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

刪除一個任務

刪除一個任務。

  1. 單擊任務選項卡。

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

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

複製任務路徑

複製一個任務的路徑,例如,一個筆記本的路徑:

  1. 單擊任務選項卡。

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

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

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

預覽

此功能已在公共預覽

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

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

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

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

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

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

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

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

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

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

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

多任務作業中的其他筆記本任務以以下方式之一引用遠程存儲庫中的相同提交:

  • $分支/頭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()

在使用共享時,還有幾個方法應該避免SparkContext

  • 不叫SparkContext.stop ()

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

使用終於嚐試用於清理作業的塊

考慮一個由兩部分組成的JAR:

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

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

作為一個例子,jobBody ()可以創建表,可以使用嗎jobCleanup ()放下這些桌子。

確保清理方法被調用的安全方法是放一個終於嚐試代碼中的塊:

試一試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版本。