筆記本電腦軟件工程最佳實踐

本文提供了一個實踐演練,演示了如何將軟件工程最佳實踐應用到您的Databricks筆記本,包括版本控製、代碼共享、測試,以及可選的持續集成和持續交付或部署(CI/CD)。

在本演練中,您將:

  • 將筆記本添加到Databricks Repos中進行版本控製。

  • 從一個筆記本中提取部分代碼到一個可共享的模塊中。

  • 測試共享代碼。

  • 運行Databricks任務中的筆記本。

  • 可選地對共享代碼應用CI/CD。

需求

要完成此演練,您必須提供以下資源:

  • 的遠程存儲庫Git提供者Databricks支持的。本文的演練使用GitHub。本演練假設您有一個名為best-notebooks可用。(您可以給您的存儲庫一個不同的名稱。如果有,更換best-notebooks在本演練中使用您的回購方的名稱。)創建一個GitHub回購如果你還沒有。

    請注意

    如果創建一個新的repo,請確保使用至少一個文件初始化存儲庫,例如a自述文件。

  • 一個磚工作空間創建一個工作區如果你還沒有。

  • 一個磚通用的集群在工作區中。要在設計階段運行筆記本,您將筆記本連接到正在運行的通用集群上.稍後,本演練將使用Databricks工作在此集群上自動運行筆記本。(您還可以運行作業工作的集群它們隻存在於工作的生命周期內。)創建通用集群如果你還沒有。

    請注意

    要使用Databricks Repos中的文件,參與集群必須安裝Databricks Runtime 8.4或更高版本。Databricks建議這些集群安裝最新的長期支持(LTS)版本,即Databricks Runtime 10.4 LTS。

預排

在本演練中,您將:

  1. 連接你現有的GitHub回購到Databricks回購。

  2. 將一個現有的筆記本添加到回購中,然後第一次運行該筆記本。

  3. 將一些代碼從筆記本移動到共享模塊中。第二次運行記事本,以確保記事本按預期調用共享代碼。

  4. 使用第二個筆記本分別測試共享代碼,而不必再次運行第一個筆記本。

  5. 創建Databricks作業以自動運行這兩個筆記本,可以按需運行,也可以定期運行。

  6. 設置回購以在回購中創建拉請求時運行測試共享代碼的第二個筆記本。

  7. 發出一個拉請求來更改共享代碼,這將觸發測試自動運行。

下麵的步驟將介紹這些活動中的每一個。

步驟1:設置Databricks Repos

在這一步中,您將現有的GitHub回購連接到現有Databricks工作區中的Databricks回購。

要使您的工作空間連接到您的GitHub回購,您必須首先為您的工作空間提供您的GitHub憑證,如果您還沒有這樣做。

步驟1.1:提供您的GitHub憑證

  1. 在你的工作空間,在側邊欄數據科學與工程機器學習環境中,點擊設置>用戶設置

  2. 用戶設置頁麵,點擊Git集成

  3. Git集成選項卡,Git提供者中,選擇GitHub

  4. Git提供程序用戶名或電子郵件,輸入你的GitHub用戶名。

  5. 令牌,輸入您的GitHub個人訪問令牌.該令牌必須具有回購許可。

  6. 點擊保存

步驟1.2:連接到你的GitHub回購

  1. 的側邊欄上數據科學與工程機器學習環境中,點擊回購

  2. 回購窗格中,單擊添加回購

  3. 添加回購對話框:

    1. 點擊克隆遠程Git回購

    2. Git倉庫URL,進入GitHub使用HTTPS進行克隆你的GitHub回購的URL。本文假設您的URL以best-notebooks.git例如,https://github.com/ < your-GitHub-username > / best-notebooks.git

    3. 旁邊的下拉列表中Git倉庫URL中,選擇GitHub

    4. 離開回購的名字例如,設置為回購的名稱best-notebooks

    5. 點擊創建

步驟2:導入並運行筆記本

在這一步中,您將導入一個現有的外部筆記本到您的回購中。您可以為本演練創建自己的筆記本,但為了加快速度,我們在這裏為您提供它們。

步驟2.1:在repo中創建一個工作分支

在此子步驟中,您將創建一個名為eda在你的回購書裏。這個分支使您能夠獨立於您的回購來處理文件和代碼主要分支,這是一個軟件工程的最佳實踐。(你可以給你的分支起一個不同的名字。)

請注意

在一些回購中主要分支機構可命名代替。如果是,更換主要在本演練中。

提示

如果您不熟悉在Git分支中工作,請參見Git分支——果殼中的分支在Git網站上。

  1. 如果回購窗格中未顯示,則在側欄中數據科學與工程機器學習環境中,點擊回購

  2. 如果在上一步中連接到的回購沒有顯示在回購窗格,然後選擇您的工作區用戶名,並選擇您在上一步中連接到的回購的名稱。

  3. 單擊回購名稱旁邊的下拉箭頭,然後單擊Git

  4. best-notebooks對話框,單擊+創建分支)按鈕。

    請注意

    如果你的回購書名字不是best-notebooks,這個對話框的標題在這裏和整個演練過程中都是不同的。

  5. 輸入eda然後按Enter鍵。

  6. 關閉此對話框。

步驟2.2:將筆記本導入到repo中

在這個子步驟中,您將從另一個回購中導入一個現有的筆記本到您的回購中。這本筆記本有以下功能:

  1. 控件中複製CSV文件owid / covid-19-dataGitHub存儲庫到您工作空間中的集群上。這個CSV文件包含來自世界各地的關於COVID-19住院和重症監護指標的公共數據。

  2. 將CSV文件的內容讀入熊貓DataFrame

  3. 過濾數據以隻包含來自美國的指標。

  4. 顯示數據的圖形。

  5. 將熊貓數據幀保存為Spark上的Pandas APIDataFrame

  6. 在Spark DataFrame的Pandas API上執行數據清理。

  7. 將Pandas API寫在Spark DataFrame上差值表在你的工作空間。

  8. 顯示Delta表的內容。

雖然您可以在這裏的回購中創建自己的筆記本,但在這裏導入一個現有的筆記本反而有助於加快本演練。若要在此分支中創建筆記本或將現有筆記本移動到此分支中,而不是導入筆記本,請參見處理Databricks Repos中的筆記本和其他文件

  1. 回購窗格,單擊回購名稱旁邊的下拉箭頭,然後單擊創建>文件夾

  2. 新文件夾名稱對話框中,輸入筆記本電腦,然後按創建文件夾

  3. 回購窗格中,單擊您的回購名稱,單擊旁邊的下拉箭頭筆記本電腦文件夾,然後單擊進口

  4. 進口筆記本電腦對話框:

    1. 進口的中,選擇URL

    2. 的原始內容輸入URLcovid_eda_raw筆記本電腦磚/ notebook-best-practices在GitHub回購。要獲取此URL:

      1. https://github.com/databricks/notebook-best-practices

      2. 單擊筆記本電腦文件夾中。

      3. 單擊covid_eda_raw.py文件。

      4. 點擊

      5. 複製完整的URL從您的網頁瀏覽器的地址欄到進口筆記本電腦對話框。

        請注意

        進口筆記本電腦對話框僅適用於公共存儲庫的Git url。

    3. 點擊進口

步驟2.3:運行筆記本

  1. 如果筆記本還沒有顯示,在回購窗格,雙擊covid_eda_raw筆記本在筆記本電腦文件夾來打開它。

  2. 在筆記本上,在下拉列表旁邊文件,選擇要將此筆記本附加到的集群。

  3. 點擊運行所有

  4. 如果有提示,請單擊連接並運行啟動,附加和運行

  5. 等待筆記本運行。

在筆記本完成運行後,您應該在筆記本中看到一個數據圖,以及Delta表中的600多行原始數據。如果在您開始運行這個筆記本時集群還沒有運行,那麼在顯示結果之前,集群啟動可能需要幾分鍾的時間。

步驟2.4:簽入並合並筆記本

在這個子步驟中,您將保存到目前為止您的工作到您的GitHub回購。然後將工作分支的筆記本合並到回購中主要分支。

  1. 回購窗格為您的回購,單擊eda分支。

  2. best-notebooks對話,在變化Tab,確保筆記本/ covid_eda_raw.py文件被選中。

  3. 總結(必需),輸入添加筆記本

  4. 描述(可選),輸入第一個版本筆記本。

  5. 點擊提交和推送

  6. 點擊曆史,或按在git提供程序上創建一個pull請求彈出的鏈接。

  7. 在GitHub中,單擊把請求選項卡,創建拉請求,然後將拉請求合並到主要分支。

  8. 回到Databricks工作空間,關閉best-notebooks對話,如果它仍然顯示。

步驟3:將代碼移動到共享模塊中

在這一步中,您將把筆記本中的一些代碼移到筆記本之外的一組共享函數中。這使您能夠將這些函數與其他類似的筆記本一起使用,這可以加快未來的編碼,並幫助確保更可預測和一致的筆記本結果。共享這些代碼還使您能夠更容易地測試這些函數,這作為軟件工程的最佳實踐可以提高您的代碼的整體質量。

步驟3.1:在repo中創建另一個工作分支

  1. 在你的工作空間,在回購窗格為您的回購,單擊eda分支。

  2. best-notebooks對話框,單擊控件旁邊的下拉箭頭eda分支,並選擇主要

  3. 單擊按鈕。如果提示繼續拉動,單擊確認

  4. 單擊+創建分支)按鈕。

  5. 輸入first_modules,按“Enter”。(你可以給你的分支起一個不同的名字。)

  6. 關閉此對話框。

步驟3.2:將筆記本導入到repo中

為了加快這個演練,在這個子步驟中,您可以將另一個現有的筆記本導入到您的回購中。這個筆記本做的事情與上一個筆記本相同,隻是這個筆記本將調用存儲在筆記本外部的共享代碼函數。同樣,你可以在這裏創建自己的筆記本,自己做實際的代碼共享。

  1. 回購窗格,單擊旁邊的下拉箭頭筆記本電腦文件夾,然後單擊進口

  2. 進口筆記本電腦對話框:

    1. 進口的中,選擇URL

    2. 的原始內容輸入URLcovid_eda_modular筆記本電腦磚/ notebook-best-practices在GitHub回購。要獲取此URL:

      1. https://github.com/databricks/notebook-best-practices

      2. 單擊筆記本電腦文件夾中。

      3. 單擊covid_eda_modular.py文件。

      4. 點擊

      5. 複製完整的URL從您的網頁瀏覽器的地址欄到進口筆記本電腦對話框。

        請注意

        進口筆記本電腦對話框僅適用於公共存儲庫的Git url。

    3. 點擊進口

    請注意

    你可以刪除現有的covid_eda_raw筆記本此時,因為新covid_eda_modular筆記本是第一個共享版本的筆記本。然而,你可能仍然想保留以前的筆記本,以便比較,即使你不再使用它。

步驟3.3:添加筆記本支持的共享代碼功能

  1. 回購窗格,單擊回購名稱旁邊的下拉箭頭,然後單擊創建>文件夾

    請注意

    不要單擊?旁邊的下拉箭頭筆記本電腦文件夾中。請單擊回購方名稱旁邊的下拉箭頭。你想讓它進入回購的根目錄,而不是筆記本電腦文件夾中。

  2. 新文件夾名稱對話框中,輸入covid_analysis,然後按創建文件夾

  3. 回購窗格,單擊旁邊的下拉箭頭covid_analysis文件夾,然後單擊創建>文件

  4. 新文件名對話框中,輸入transforms.py,然後按創建文件

  5. 回購窗格為您的回購,單擊covid_analysis文件夾,然後單擊transforms.py

  6. 在編輯器窗口中,輸入以下代碼:

    進口熊貓作為pd#按國家代碼過濾。deffilter_countrypdf國家“美國”):pdfpdfpdfiso_code= =國家返回pdf#以指示器為軸,填充缺失的值。defpivot_and_cleanpdffillna):pdf“價值”pdto_numericpdf“價值”])pdfpdffillnafillnapivot_table“價值”“指標”指數“日期”返回pdf#創建與Delta表兼容的列名。defclean_spark_colspdf):pdfpdfstr取代”““_”返回pdf#將索引轉換為列(在Spark上與pandas API一起工作)。defindex_to_coldfcolname):dfcolnamedf指數返回df

提示

有關其他代碼共享技術,請參見在筆記本上分享代碼

步驟3.4:添加共享代碼的依賴項

上麵的代碼有幾個Python包依賴關係,以使代碼能夠正常運行。在此子步驟中,您將聲明這些包依賴項。通過使用精確定義的庫版本,聲明依賴關係可以提高可再現性。

  1. 回購窗格,單擊回購名稱旁邊的下拉箭頭,然後單擊創建>文件

    請注意

    不要單擊?旁邊的下拉箭頭筆記本電腦covid_analysis文件夾。您希望包依賴項列表進入回購的根文件夾,而不是筆記本電腦covid_analysis文件夾。

  2. 新文件名對話框中,輸入,然後按創建文件

  3. 回購為您的回購窗格,單擊,並輸入以下代碼:

    請注意

    如果文件不可見,您可能需要刷新您的網頁瀏覽器。

    -i https://pypi.org/simple attrs==21.4.0 cycler==0.11.0 fonttools==4.33.3 iniconfig==1.1.1 kiwisolver==1.4.2 matplotlib==3.5.1 matplotlib== 1.22.3 packaging==21.3 pandas==1.4.2 pillow==9.1.0 pluggy==1.0.0 py==1.11.0 py4j==0.10.9.3 pyarrow==7.0.0 pyparse ==3.0.8 pyspark==3.2.1 pytest==7.1.2 python-dateutil==2.8.2 pytz==2022.1 six==1.16.0 tomli==2.0.1 wget==3.2

    請注意

    上述文件中列出了具體的軟件包版本。為了獲得更好的兼容性,可以將這些版本與安裝在通用集群上的版本交叉引用。請參閱您的集群的Databricks運行時版本的“係統環境”部分Databricks運行時版本

你的回購結構現在應該是這樣的:

|—covid_analysis | '—transforms.py |—notebook | |—covid_eda_modular | '—covid_eda_raw(可選)”,讓

步驟3.5:運行重構的筆記本

在此子步驟中,運行covid_eda_modular它調用共享代碼covid_analysis / transforms.py

  1. 回購窗格,雙擊covid_eda_modular筆記本在筆記本電腦文件夾中。

  2. 旁邊的下拉列表中文件,選擇要將此筆記本附加到的集群。

  3. 點擊運行所有

  4. 如果有提示,請單擊連接並運行啟動,附加和運行

  5. 等待筆記本運行。

在筆記本完成運行後,您應該在筆記本中看到與covid_eda_raw筆記本:Delta表中的數據圖以及600多行原始數據。這款筆記本的主要區別是使用了不同的過濾器iso_codeDZA而不是美國).如果在您開始運行這個筆記本時集群還沒有運行,那麼在顯示結果之前,集群啟動可能需要幾分鍾的時間。

步驟4:測試共享代碼

在這一步中,您將測試上一步中的共享代碼。但是,您希望在不運行covid_eda_modular筆記本本身。這是因為如果共享代碼無法運行,那麼筆記本本身也可能無法運行。您希望首先捕獲共享代碼中的失敗,然後再讓主筆記本最終失敗。這種測試技術是軟件工程的最佳實踐。

提示

有關測試筆記本電腦以及R和Scala筆記本電腦的其他方法,請參見筆記本的單元測試

步驟4.1:在repo中創建另一個工作分支

  1. 在你的工作空間,在回購窗格為您的回購,單擊first_modules分支。

  2. best-notebooks對話框,單擊控件旁邊的下拉箭頭first_modules分支,並選擇主要

  3. 單擊按鈕。如果提示繼續拉動,單擊確認

  4. 單擊+創建分支)按鈕。

  5. 輸入first_tests,按“Enter”。(你可以給你的分支起一個不同的名字。)

  6. 關閉此對話框。

步驟4.2:添加測試

在此子步驟中,使用pytest框架來測試共享代碼。在這些測試中,你斷言是否達到特定的測試結果。如果任何測試產生了意外的結果,該特定測試就會導致斷言失敗,從而導致測試本身失敗。

  1. 回購窗格,單擊回購名稱旁邊的下拉箭頭,然後單擊創建>文件夾

  2. 新文件夾名稱對話框中,輸入測試,然後按創建文件夾

  3. 回購窗格,單擊旁邊的下拉箭頭測試文件夾,然後單擊創建>文件

  4. 新文件名對話框中,輸入文檔,然後按創建文件

  5. 回購窗格為您的回購,單擊測試文件夾,然後單擊文檔

  6. 在編輯器窗口中,輸入以下測試數據:

    美國,美國,2022-04-17,ICU每日占用率,美國,美國,2022-04-17,每日ICU入住率每百萬,4.1美國,美國,2022-04-17,每天醫院入住率,10000年美國,美國,2022-04-17,每天醫院入住率每百萬,30.3美國,美國,2022-04-17,每周新醫院錄取,11000年美國,美國,2022-04-17,每周新入院每百萬,32.8阿爾及利亞、DZA, 2022-04-18,每日ICU入住率,1010年阿爾及利亞、DZA, 2022-04-18,每日ICU入住率每百萬,4.5阿爾及利亞、DZA, 2022-04-18,每天醫院入住率,11000阿爾及利亞,DZA,2022-04-18,每百萬人每日住院人數,30.9阿爾及利亞,DZA,2022-04-18,每周新入院人數,10000阿爾及利亞,DZA,2022-04-18,每百萬人每周新入院人數,32.1

    請注意

    使用測試數據是軟件工程的最佳實踐。這使您能夠更快地運行測試,依賴於與實際數據具有相同格式的一小部分數據。當然,在運行測試之前,您需要始終確保這個測試數據準確地代表了您的真實數據。

  7. 回購窗格,單擊旁邊的下拉箭頭測試文件夾,然後單擊創建>文件

  8. 新文件名對話框中,輸入transforms_test.py,然後按創建文件

  9. 回購窗格為您的回購,單擊測試文件夾,然後單擊transforms_test.py

  10. 在編輯器窗口中,輸入以下測試代碼。這些測試使用標準pytest固定裝置以及一個模擬的內存中的熊貓數據幀:

    #測試每個變換函數。進口pytesttextwrap進口填滿進口操作係統進口熊貓作為pd進口numpy作為npcovid_analysis.transforms進口pyspark.sql進口SparkSession@pytest夾具defraw_input_df()->pdDataFrame"""創建用於測試的輸入數據集的基本版本,包括nan。"""返回pdread_csv“測試/文檔”@pytest夾具defcolnames_df()->pdDataFramedfpdDataFrame數據[[0123.45]],“每日ICU入住率”“每日ICU入住率/百萬人”“醫院日入住率”"每百萬人每日住院人數"“每周新增住院人數”“每百萬人每周新增住院人數”返回df#確保過濾器按預期工作。deftest_filterraw_input_df):過濾後的filter_countryraw_input_df斷言過濾後的iso_codedrop_duplicates() (0= =“美國”#測試數據有每日ICU入住率的nan;這個應該被填滿為0。deftest_pivotraw_input_df):旋轉pivot_and_cleanraw_input_df0斷言旋轉“每日ICU入住率”] [0= =0#測試柱清洗。deftest_clean_colscolnames_df):清洗clean_spark_colscolnames_dfcols_w_spaces清洗過濾器正則表達式”“))斷言cols_w_spaces= =真正的#從索引創建測試列。deftest_index_to_colraw_input_df):raw_input_df“col_from_index”raw_input_df指數斷言raw_input_df指數= =raw_input_dfcol_from_index所有()

你的回購結構現在應該是這樣的:

|——covid_analysis | '——transforms.py |——notebook | |——covid_eda_modular | '——covid_eda_raw(可選)|——requirements.txt '——tests |——testdata.csv '——transforms_test.py

步驟4.3:運行測試

為了加快本演練的速度,在此子步驟中使用導入的筆記本運行前麵的測試。這個筆記本下載測試的相關Python包並將其安裝到您的工作空間中,運行測試並報告測試結果。當你可以奔跑的時候pytest從您集群的網絡終端,運行pytest從筆記本電腦可以更方便。

請注意

運行pytest運行名稱跟在表單後麵的所有文件test_ * . py\ * _test.py在當前目錄及其子目錄中。

  1. 回購窗格,單擊旁邊的下拉箭頭筆記本電腦文件夾,然後單擊進口

  2. 進口筆記本電腦對話框:

    1. 進口的中,選擇URL

    2. 的原始內容輸入URLrun_unit_tests筆記本電腦磚/ notebook-best-practices在GitHub回購。要獲取此URL:

      1. https://github.com/databricks/notebook-best-practices

      2. 單擊筆記本電腦文件夾中。

      3. 單擊run_unit_tests.py文件。

      4. 點擊

      5. 複製完整的URL從您的網頁瀏覽器的地址欄到進口筆記本電腦對話框。

        請注意

        進口筆記本電腦對話框僅適用於公共存儲庫的Git url。

    3. 點擊進口

  3. 如果筆記本還沒有顯示,在回購窗格為您的回購,單擊筆記本電腦文件夾,然後雙擊run_unit_tests筆記本。

  4. 旁邊的下拉列表中文件,選擇要將此筆記本附加到的集群。

  5. 點擊運行所有

  6. 如果有提示,請單擊連接並運行啟動,附加和運行

  7. 等待筆記本運行。

在筆記本完成運行後,您應該在筆記本中看到關於通過測試和失敗測試數量的信息,以及其他相關的詳細信息。如果在您開始運行這個筆記本時集群還沒有運行,那麼在顯示結果之前,集群啟動可能需要幾分鍾的時間。

你的回購結構現在應該是這樣的:

|——covid_analysis | '——transformer .py |——notebook | |——covid_eda_modular | |——covid_eda_raw(可選)| '——run_unit_tests |——requirements.txt '——tests |——testdata.csv '——transforms_test.py

步驟5:創建一個作業來運行筆記本

在前麵的步驟中,您手動測試了共享代碼,並手動運行了筆記本。在這一步中,您將使用Databricks作業來測試您的共享代碼並自動運行您的筆記本,可以按需運行,也可以定期運行。

步驟5.1:創建一個作業任務來運行測試筆記本

  1. 的側邊欄上數據科學與工程機器學習環境中,點擊工作流

  2. 工作選項卡上,單擊創建工作

  3. 為你的工作添加一個名字(就在運行而且任務標簽),輸入covid_report

  4. 任務名稱,輸入run_notebook_tests

  5. 類型中,選擇筆記本

  6. 中,選擇Git

  7. 點擊添加一個git引用

  8. Git信息對話框:

    1. Git倉庫URL,進入GitHub使用HTTPS進行克隆你的GitHub回購的URL。本文假設您的URL以best-notebooks.git例如,https://github.com/ < your-GitHub-username > / best-notebooks.git

    2. Git提供者中,選擇GitHub

    3. Git引用(分支/標簽/提交),輸入主要

    4. 旁邊Git引用(分支/標簽/提交)中,選擇分支

    5. 點擊確認

  9. 路徑,輸入筆記本/ run_unit_tests.不要添加. py文件擴展名。

  10. 集群,選擇上一步中的集群。

  11. 點擊創建

請注意

在這種情況下,Databricks不建議您使用筆記本中的schedule按鈕創建和管理預定的筆記本作業安排一個作業定期運行此筆記本。這是因為schedule按鈕通過使用最新的創建作業工作工作空間回購中筆記本的副本。相反,Databricks建議您按照上述說明創建使用最新版本的作業承諾回購書裏筆記本的版本。

步驟5.2:創建一個作業任務來運行主筆記本

  1. 單擊+在這裏為你的工作添加更多的任務)圖標。

  2. 任務名稱,輸入run_main_notebook

  3. 類型中,選擇筆記本

  4. 路徑,輸入筆記本/ covid_eda_modular.不要添加. py文件擴展名。

  5. 集群,選擇上一步中的集群。

  6. 點擊創建任務

步驟5.3運行job

  1. 點擊現在運行

  2. 在彈出的窗口中,單擊查看運行

    請注意

    如果彈出窗口消失得太快,請執行以下操作:

    1. 的側邊欄上數據科學與工程機器學習環境中,點擊工作流

    2. 工作運行選項卡,單擊開始時間最新工作的價值covid_report工作列。

  3. 要查看工作結果,請單擊run_notebook_tests瓷磚,run_main_notebook瓷磚,或者兩者都有。每個貼圖上的結果和你自己一個一個地運行筆記本是一樣的。

請注意

這項工作按需進行。要設置此作業定期運行,請參見安排一份工作

(可選)步驟6:設置repo來測試代碼,並在代碼更改時自動運行筆記本

在上一步中,您使用作業自動測試共享代碼,並在某個時間點或循環運行筆記本。然而,您可能更喜歡在更改合並到GitHub回購時自動觸發測試。您可以通過使用CI/CD平台,例如Beplay体育安卓版本GitHub的行為

步驟6.1:設置對工作區的GitHub訪問

在這個子步驟中,您設置了一個GitHub Actions工作流,每當更改合並到存儲庫中時,該工作流就會在工作區中運行作業。你可以通過給GitHub一個唯一的Databricks令牌來訪問。

出於安全原因,Databricks不鼓勵您將Databricks工作區用戶的個人訪問令牌提供給GitHub。相反,Databricks建議你給GitHub一個Databricks訪問令牌,它與Databricks服務主體相關聯。有關說明,請參閱AWS部份運行Databricks筆記本GitHub Action在GitHub行動市場的頁麵。

重要的

筆記本使用與令牌相關聯的標識的所有工作空間權限運行,因此Databricks建議使用服務主體。如果您真的想將Databricks工作空間用戶的個人訪問令牌僅用於個人探索目的,並且您理解出於安全原因Databricks不鼓勵這種做法,請參閱說明創建您的工作區用戶的個人訪問令牌

步驟6.2:添加GitHub動作工作流

在這個子步驟中,您添加了一個GitHub Actions工作流來運行run_unit_tests無論何時有對回購的拉取請求。

這個子步驟將GitHub Actions工作流存儲在一個文件中,該文件存儲在GitHub repo的多個文件夾級別中。GitHub動作要求在回購中存在特定的嵌套文件夾層次結構,以便正常工作。要完成這一步,您必須使用網站進行GitHub回購,因為Databricks回購用戶界麵不支持創建嵌套文件夾層次結構。

  1. 在GitHub回購的網站中,單擊代碼選項卡。

  2. 切換分支或標記下拉列表,選擇主要,如果它還沒有被選中。

  3. 如果切換分支或標記下拉列表中沒有顯示查找或創建一個分支框中,單擊主要一次。

  4. 查找或創建一個分支框中,輸入adding_github_actions

  5. 點擊創建分支:adding_github_actions from ' main '

  6. 點擊新建文件>

  7. 命名你的文件,輸入.github /工作流/ databricks_pull_request_tests.yml

  8. 在編輯器窗口中,輸入以下代碼。該代碼使用聲明的pull_request鉤子來使用運行Databricks筆記本GitHub Action運行run_unit_tests筆記本。

    在以下代碼中,替換:

    • < your-workspace-instance-URL >用你的數據庫實例名

    • < your-access-token >使用您前麵生成的令牌。

    • < your-cluster-id >和你的目標集群ID

    的名字運行合並前的數據庫測試pull_requestenv#將此值替換為您的工作區實例名。DATABRICKS_HOSThttps:// < your-workspace-instance-name >工作unit-test-notebook運行在ubuntu-latesttimeout-minutes15步驟-的名字檢驗回購使用行動/ checkout@v2-的名字運行測試筆記本使用磚/ run-notebook@maindatabricks-token< your-access-token >local-notebook-path筆記本/ run_unit_tests.pyexisting-cluster-id< your-cluster-id >git-commit“$ {{github.event.pull_request.head.sha}}”#授予所有用戶查看筆記本結果的權限,這樣他們就可以#查看結果的筆記本,如果他們有相關的訪問權限。access-control-list-json>“group_name”:“用戶”,:“permission_level CAN_VIEW”run-name“EDA轉換助手模塊單位測試”
  9. 選擇為這個提交創建一個新的分支,並啟動一個拉請求

  10. 點擊建議新文件

  11. 單擊把請求選項卡,然後創建拉請求。

  12. 在拉取請求頁麵上,等待旁邊的圖標運行預合並Databricks測試/ unit-test-notebook (pull_request)顯示綠色複選標記。(圖標可能需要幾分鍾才能出現。)如果選中的是紅色的X而不是綠色的複選標記,請單擊細節找出原因。如果圖標或細節不再顯示,點擊顯示所有支票

  13. 如果出現綠色複選標記,則將pull請求合並到主要分支。

(可選)步驟7:更新GitHub中的共享代碼以觸發測試

在此步驟中,您對共享代碼進行更改,然後將更改推入GitHub回購,這將立即自動觸發測試,基於上一步中的GitHub操作。

步驟7.1:在repo中創建另一個工作分支

  1. 在你的工作空間,在回購窗格為您的回購,單擊first_tests分支。

  2. best-notebooks對話框,單擊控件旁邊的下拉箭頭first_tests分支,並選擇主要

  3. 單擊按鈕。如果提示繼續拉動,單擊確認

  4. 單擊+創建分支)按鈕。

  5. 輸入trigger_tests,按“Enter”。(你可以給你的分支起一個不同的名字。)

  6. 關閉此對話框。

步驟7.2:更改共享代碼

  1. 在你的工作空間,在回購窗格,雙擊covid_analysis / transforms.py文件。

  2. 在這個文件的第三行,修改這行代碼:

    #按國家代碼過濾。

    :

    #按國家代碼過濾。如果沒有指定,則使用“USA”。

步驟7.3:簽入更改以觸發測試

  1. 回購窗格為您的回購,單擊trigger_tests分支。

  2. best-notebooks對話,在變化Tab,確保covid_analysis / transforms.py被選中。

  3. 總結(必需),輸入更新評論

  4. 描述(可選),輸入更新評論filter_country。

  5. 點擊提交和推送

  6. 點擊曆史,或按在git提供程序上創建一個pull請求彈出的鏈接。

  7. 在GitHub中,單擊把請求選項卡,然後創建拉請求。

  8. 在拉取請求頁麵上,等待旁邊的圖標運行預合並Databricks測試/ unit-test-notebook (pull_request)顯示綠色複選標記。(圖標可能需要幾分鍾才能出現。)如果選中的是紅色的X而不是綠色的複選標記,請單擊細節找出原因。如果圖標或細節不再顯示,點擊顯示所有支票

  9. 如果出現綠色複選標記,則將pull請求合並到主要分支。