筆記本電腦軟件工程最佳實踐
本文提供了一個實踐演練,演示了如何將軟件工程最佳實踐應用到您的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。
預排
在本演練中,您將:
連接你現有的GitHub回購到Databricks回購。
將一個現有的筆記本添加到回購中,然後第一次運行該筆記本。
將一些代碼從筆記本移動到共享模塊中。第二次運行記事本,以確保記事本按預期調用共享代碼。
使用第二個筆記本分別測試共享代碼,而不必再次運行第一個筆記本。
創建Databricks作業以自動運行這兩個筆記本,可以按需運行,也可以定期運行。
設置回購以在回購中創建拉請求時運行測試共享代碼的第二個筆記本。
發出一個拉請求來更改共享代碼,這將觸發測試自動運行。
下麵的步驟將介紹這些活動中的每一個。
步驟
步驟1:設置Databricks Repos
在這一步中,您將現有的GitHub回購連接到現有Databricks工作區中的Databricks回購。
要使您的工作空間連接到您的GitHub回購,您必須首先為您的工作空間提供您的GitHub憑證,如果您還沒有這樣做。
步驟1.1:提供您的GitHub憑證
在你的工作空間,在側邊欄在數據科學與工程或機器學習環境中,點擊設置>用戶設置.
在用戶設置頁麵,點擊Git集成.
在Git集成選項卡,Git提供者中,選擇GitHub.
為Git提供程序用戶名或電子郵件,輸入你的GitHub用戶名。
為令牌,輸入您的GitHub個人訪問令牌.該令牌必須具有回購許可。
點擊保存.
步驟1.2:連接到你的GitHub回購
的側邊欄上數據科學與工程或機器學習環境中,點擊回購.
在回購窗格中,單擊添加回購.
在添加回購對話框:
點擊克隆遠程Git回購.
為Git倉庫URL,進入GitHub使用HTTPS進行克隆你的GitHub回購的URL。本文假設您的URL以
best-notebooks.git
例如,https://github.com/ < your-GitHub-username > / best-notebooks.git
.旁邊的下拉列表中Git倉庫URL中,選擇GitHub.
離開回購的名字例如,設置為回購的名稱
best-notebooks
.點擊創建.
步驟2:導入並運行筆記本
在這一步中,您將導入一個現有的外部筆記本到您的回購中。您可以為本演練創建自己的筆記本,但為了加快速度,我們在這裏為您提供它們。
步驟2.1:在repo中創建一個工作分支
在此子步驟中,您將創建一個名為eda
在你的回購書裏。這個分支使您能夠獨立於您的回購來處理文件和代碼主要
分支,這是一個軟件工程的最佳實踐。(你可以給你的分支起一個不同的名字。)
請注意
在一些回購中主要
分支機構可命名主
代替。如果是,更換主要
與主
在本演練中。
提示
如果您不熟悉在Git分支中工作,請參見Git分支——果殼中的分支在Git網站上。
如果回購窗格中未顯示,則在側欄中數據科學與工程或機器學習環境中,點擊回購.
如果在上一步中連接到的回購沒有顯示在回購窗格,然後選擇您的工作區用戶名,並選擇您在上一步中連接到的回購的名稱。
單擊回購名稱旁邊的下拉箭頭,然後單擊Git.
在best-notebooks對話框,單擊+(創建分支)按鈕。
請注意
如果你的回購書名字不是
best-notebooks
,這個對話框的標題在這裏和整個演練過程中都是不同的。輸入
eda
然後按Enter鍵。關閉此對話框。
步驟2.2:將筆記本導入到repo中
在這個子步驟中,您將從另一個回購中導入一個現有的筆記本到您的回購中。這本筆記本有以下功能:
控件中複製CSV文件owid / covid-19-dataGitHub存儲庫到您工作空間中的集群上。這個CSV文件包含來自世界各地的關於COVID-19住院和重症監護指標的公共數據。
過濾數據以隻包含來自美國的指標。
顯示數據的圖形。
將熊貓數據幀保存為Spark上的Pandas APIDataFrame.
在Spark DataFrame的Pandas API上執行數據清理。
將Pandas API寫在Spark DataFrame上差值表在你的工作空間。
顯示Delta表的內容。
雖然您可以在這裏的回購中創建自己的筆記本,但在這裏導入一個現有的筆記本反而有助於加快本演練。若要在此分支中創建筆記本或將現有筆記本移動到此分支中,而不是導入筆記本,請參見處理Databricks Repos中的筆記本和其他文件.
在回購窗格,單擊回購名稱旁邊的下拉箭頭,然後單擊創建>文件夾.
在新文件夾名稱對話框中,輸入
筆記本電腦
,然後按創建文件夾.在回購窗格中,單擊您的回購名稱,單擊旁邊的下拉箭頭筆記本電腦文件夾,然後單擊進口.
在進口筆記本電腦對話框:
為進口的中,選擇URL.
的原始內容輸入URL
covid_eda_raw
筆記本電腦磚/ notebook-best-practices
在GitHub回購。要獲取此URL:單擊
筆記本電腦
文件夾中。單擊
covid_eda_raw.py
文件。點擊生.
複製完整的URL從您的網頁瀏覽器的地址欄到進口筆記本電腦對話框。
請注意
的進口筆記本電腦對話框僅適用於公共存儲庫的Git url。
點擊進口.
步驟2.3:運行筆記本
如果筆記本還沒有顯示,在回購窗格,雙擊covid_eda_raw筆記本在筆記本電腦文件夾來打開它。
在筆記本上,在下拉列表旁邊文件,選擇要將此筆記本附加到的集群。
點擊運行所有.
如果有提示,請單擊連接並運行或啟動,附加和運行.
等待筆記本運行。
在筆記本完成運行後,您應該在筆記本中看到一個數據圖,以及Delta表中的600多行原始數據。如果在您開始運行這個筆記本時集群還沒有運行,那麼在顯示結果之前,集群啟動可能需要幾分鍾的時間。
步驟2.4:簽入並合並筆記本
在這個子步驟中,您將保存到目前為止您的工作到您的GitHub回購。然後將工作分支的筆記本合並到回購中主要
分支。
在回購窗格為您的回購,單擊eda分支。
在best-notebooks對話,在變化Tab,確保筆記本/ covid_eda_raw.py文件被選中。
為總結(必需),輸入
添加生筆記本
.為描述(可選),輸入
這是的第一個版本的的筆記本。
點擊提交和推送.
點擊曆史,或按在git提供程序上創建一個pull請求彈出的鏈接。
在GitHub中,單擊把請求選項卡,創建拉請求,然後將拉請求合並到
主要
分支。回到Databricks工作空間,關閉best-notebooks對話,如果它仍然顯示。
步驟5:創建一個作業來運行筆記本
在前麵的步驟中,您手動測試了共享代碼,並手動運行了筆記本。在這一步中,您將使用Databricks作業來測試您的共享代碼並自動運行您的筆記本,可以按需運行,也可以定期運行。
步驟5.1:創建一個作業任務來運行測試筆記本
的側邊欄上數據科學與工程或機器學習環境中,點擊工作流.
在工作選項卡上,單擊創建工作.
為為你的工作添加一個名字(就在運行而且任務標簽),輸入
covid_report
.為任務名稱,輸入
run_notebook_tests
.為類型中,選擇筆記本.
為源中,選擇Git.
點擊添加一個git引用.
在Git信息對話框:
為Git倉庫URL,進入GitHub使用HTTPS進行克隆你的GitHub回購的URL。本文假設您的URL以
best-notebooks.git
例如,https://github.com/ < your-GitHub-username > / best-notebooks.git
.為Git提供者中,選擇GitHub.
為Git引用(分支/標簽/提交),輸入
主要
.旁邊Git引用(分支/標簽/提交)中,選擇分支.
點擊確認.
為路徑,輸入
筆記本/ run_unit_tests
.不要添加. py
文件擴展名。為集群,選擇上一步中的集群。
點擊創建.
請注意
在這種情況下,Databricks不建議您使用筆記本中的schedule按鈕創建和管理預定的筆記本作業安排一個作業定期運行此筆記本。這是因為schedule按鈕通過使用最新的創建作業工作工作空間回購中筆記本的副本。相反,Databricks建議您按照上述說明創建使用最新版本的作業承諾回購書裏筆記本的版本。
步驟5.2:創建一個作業任務來運行主筆記本
單擊+(在這裏為你的工作添加更多的任務)圖標。
為任務名稱,輸入
run_main_notebook
.為類型中,選擇筆記本.
為路徑,輸入
筆記本/ covid_eda_modular
.不要添加. py
文件擴展名。為集群,選擇上一步中的集群。
點擊創建任務.
步驟5.3運行job
點擊現在運行.
在彈出的窗口中,單擊查看運行.
請注意
如果彈出窗口消失得太快,請執行以下操作:
的側邊欄上數據科學與工程或機器學習環境中,點擊工作流.
在工作運行選項卡,單擊開始時間最新工作的價值covid_report在工作列。
要查看工作結果,請單擊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回購用戶界麵不支持創建嵌套文件夾層次結構。
在GitHub回購的網站中,單擊代碼選項卡。
在切換分支或標記下拉列表,選擇主要,如果它還沒有被選中。
如果切換分支或標記下拉列表中沒有顯示查找或創建一個分支框中,單擊主要一次。
在查找或創建一個分支框中,輸入
adding_github_actions
.點擊創建分支:adding_github_actions from ' main '.
點擊新建文件>.
為命名你的文件,輸入
.github /工作流/ databricks_pull_request_tests.yml
.在編輯器窗口中,輸入以下代碼。該代碼使用聲明的pull_request鉤子來使用運行Databricks筆記本GitHub Action運行
run_unit_tests
筆記本。在以下代碼中,替換:
< your-workspace-instance-URL >
用你的數據庫實例名.< your-access-token >
使用您前麵生成的令牌。< your-cluster-id >
和你的目標集群ID.
的名字:運行合並前的數據庫測試在:pull_request:env:#將此值替換為您的工作區實例名。DATABRICKS_HOST:https:// < your-workspace-instance-name >工作:unit-test-notebook:運行在:ubuntu-latesttimeout-minutes:15步驟:-的名字:檢驗回購使用:行動/ checkout@v2-的名字:運行測試筆記本使用:磚/ run-notebook@main與:databricks-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轉換助手模塊單位測試”
選擇為這個提交創建一個新的分支,並啟動一個拉請求.
點擊建議新文件.
單擊把請求選項卡,然後創建拉請求。
在拉取請求頁麵上,等待旁邊的圖標運行預合並Databricks測試/ unit-test-notebook (pull_request)顯示綠色複選標記。(圖標可能需要幾分鍾才能出現。)如果選中的是紅色的X而不是綠色的複選標記,請單擊細節找出原因。如果圖標或細節不再顯示,點擊顯示所有支票.
如果出現綠色複選標記,則將pull請求合並到
主要
分支。