使用Databricks的IDE
您可以使用第三方集成開發環境(ide)與Databricks進行軟件開發。其中一些ide包括以下內容:
您可以使用這些ide以Databricks支持的編程語言進行軟件開發,包括以下語言:
為了演示這是如何工作的,本文描述了一個基於python的代碼示例可以在任何python兼容的IDE中使用。具體地說,本文描述如何在中使用此代碼示例Visual Studio代碼,提供以下開發人員生產力特性:
本文使用Databricks Labs的dbx連同Visual Studio Code一起提交代碼示例到遠程Databricks工作空間.dbx
指示Databricks在Databricks上編排數據處理工作流在Databricks上運行提交的代碼集群工作在那個工作空間。
您可以使用流行的第三方Git提供程序對代碼進行版本控製、持續集成和持續交付或持續部署(CI/CD)。對於版本控製,這些Git提供程序包括以下內容:
Azure DevOps(Azure中國地區不可用)
CI / CD,dbx
支持以下CI/CD平台:Beplay体育安卓版本
為了演示版本控製和CI/CD是如何工作的,本文描述了如何使用Visual Studio Code,dbx
,以及這個代碼示例,以及GitHub和GitHub動作。
代碼樣例需求
要使用此代碼示例,您必須具備以下條件:
Databricks帳戶中的Databricks工作空間。創建一個工作區如果你還沒有。
一個GitHub賬戶。創建一個GitHub帳戶,如果你還沒有。
此外,在您的本地開發機器上,您必須具有以下內容:
Python版本3.8或以上。
您應該使用與安裝在目標集群上的Python版本相匹配的Python版本。要獲得安裝在現有集群上的Python版本,可以使用集群的網絡終端運行
python——版本
命令。的“係統環境”部分Databricks運行時版本獲取目標集群的Databricks運行時版本。在任何情況下,Python版本必須是3.8或更高版本。要獲取本地機器上當前引用的Python版本,請運行
python——版本
從本地終點站。(根據您在本地機器上設置Python的方式,您可能需要運行python3
而不是python
貫穿本文。)另請參閱選擇一個Python解釋器.皮普.
皮普
在較新版本的Python中自動安裝。檢查是否皮普
已經安裝,運行嗎皮普——版本
從本地終點站。(取決於您如何設置Python或皮普
在本地機器上,您可能需要運行pip3
而不是皮普
貫穿本文。)dbx0.8.0或以上版本。您可以安裝
dbx
從Python包索引(PyPI)中獲取包皮普安裝dbx
.請注意
您不需要安裝
dbx
現在。您可以在稍後的代碼示例中安裝它設置部分。-
請注意
現在不需要安裝Databricks命令行。您可以在稍後的代碼示例中安裝它設置部分。如果您想稍後安裝它,則必須記得在那個時候設置身份驗證。
的PythonVisual Studio Code擴展。
的GitHub拉請求和問題Visual Studio Code擴展。
Git.
關於代碼示例
本文的Python代碼示例,可在磚/ ide-best-practices在GitHub回購,做了以下:
獲取數據。owid / covid-19-data在GitHub回購。
篩選特定ISO國家代碼的數據。
從數據創建一個透視表。
對數據執行數據清理。
將代碼邏輯模塊化為可重用的函數。
單元測試函數。
提供了
dbx
項目配置和設置,以使代碼能夠將數據寫入遠程Databricks工作空間中的Delta表。
設置代碼示例
在你有了需求在準備好這個代碼樣例之後,完成以下步驟開始使用代碼樣例。
請注意
這些步驟不包括為CI/CD設置此代碼示例。您不需要設置CI/CD來運行此代碼示例。如果您想稍後設置CI/CD,請參閱運行與GitHub動作.
步驟1:創建一個Python虛擬環境
從終端創建一個空白文件夾,以包含此代碼示例的虛擬環境。這些指令使用名為
ide-demo
.你可以給這個文件夾起任何名字。如果使用不同的名稱,請在本文中替換該名稱。創建文件夾後,切換到該文件夾,然後從該文件夾啟動Visual Studio Code。一定要加上點(.
)後代碼
命令。對於Linux和macOS:
mkdir ide-democd演示代碼。
提示
如果你得到了錯誤
命令不發現:代碼
,請參閱從命令行啟動在微軟網站上。Windows:
醫學博士ide-democdide-demo代碼.
在Visual Studio Code中,在菜單欄上單擊查看“> Terminal”.
從根的
ide-demo
文件夾,運行pipenv
使用以下選項命令,其中<版本>
例如,您已經在本地安裝的Python的目標版本(並且,理想情況下,是與您的目標集群的Python版本相匹配的版本)3.8.14
.Pipenv——python < >版本
記一下
Virtualenv位置
的輸出中pipenv
命令,因為您將在下一步中需要它。選擇目標Python解釋器,然後激活Python虛擬環境:
在菜單欄上,單擊查看>命令麵板、類型
Python:選擇
,然後按Python:選擇Interpreter.在剛剛創建的Python虛擬環境的路徑中選擇Python解釋器。(該路徑被列為
Virtualenv位置
的輸出中pipenv
命令。)在菜單欄上,單擊查看>命令麵板、類型
終端:創建
,然後按終端:新建終端.確保命令提示符表明您處於
pipenv
殼。要確認,你應該會看到如下內容(<用戶名>)
在命令提示符之前。如果沒有,執行以下命令:pipenv殼
退出。
pipenv
Shell,執行命令退出
,括號消失。
有關更多信息,請參見在VS Code中使用Python環境在Visual Studio Code文檔中。
步驟2:從GitHub克隆代碼示例
在Visual Studio Code中,打開
ide-demo
文件夾(打開文件夾),如果它還沒有打開。點擊查看>命令麵板、類型
Git:克隆
,然後按Git:克隆.為提供存儲庫URL或選擇存儲庫源,輸入
https://github.com/databricks/ide-best-practices
瀏覽到您的
ide-demo
文件夾,然後單擊選擇存儲庫位置.
步驟3:安裝代碼示例的依賴項
安裝版本的
dbx
以及與您的Python版本兼容的Databricks命令行。要做到這一點,在Visual Studio Code從您的終端,從您的ide-demo
帶有pipenv
外殼已激活(pipenv殼牌
),執行以下命令:PIP安裝DBX
確認
dbx
安裝。為此,運行以下命令:dbx——版本
如果返回版本號,
dbx
安裝。如果版本號低於0.8.0,請升級
dbx
執行如下命令,重新檢查版本號。PIP安裝DBX——升級DBX——版本#或…Python -m PIP install DBX——upgrade DBX——version
安裝時
dbx
,同時自動安裝Databricks命令行。使用實例確認已安裝Databricks命令行。磚,版本
如果返回版本號,表示已安裝Databricks命令行。
如果您還沒有設置Databricks命令行身份驗證你必須現在就做。要確認已設置身份驗證,請運行以下基本命令來獲取有關Databricks工作空間的一些摘要信息。一定要包括正斜杠(
/
)後ls
子命令:Databricks工作區ls /
如果返回工作空間的根級文件夾名稱列表,則設置身份驗證。
安裝此代碼示例所依賴的Python包。要做到這一點,請從
ide-demo / ide-best-practices
文件夾:PIP install -r unit-requirements.txt
確認安裝了代碼示例的依賴包。為此,運行以下命令:
皮普列表
中列出的包
讓
而且unit-requirements.txt
文件位於此列表中的某個位置,安裝了相關的包。請注意
列出的文件
讓
用於特定的包版本。為獲得更好的兼容性,可以將這些版本與集群節點類型您希望Databricks工作空間稍後使用它來運行部署。請參閱您的集群的Databricks運行時版本的“係統環境”部分Databricks運行時版本.
步驟4:為Databricks工作空間定製代碼示例
定製回購
dbx
項目設置。要做到這一點,在.dbx / project.json
文件,更改的值配置文件
對象從默認的
與您使用Databricks CLI為身份驗證設置的配置文件的名稱相匹配。如果沒有設置任何非默認配置文件,請離開默認的
為是。例如:{“環境”:{“默認”:{“配置文件”:“默認”,“storage_type”:“mlflow”,“屬性”:{“workspace_directory”:“/共享/ dbx / covid_analysis”,“artifact_location”:“dbfs: /共享/ dbx /項目/ covid_analysis”}}},“inplace_jinja_support”:假}
自定義
dbx
項目的部署設置。要做到這一點,在conf / deployment.yml
文件,更改的值spark_version
而且node_type_id
對象從10.4.x-scala2.12
而且m6gd.large
數據庫運行時版本字符串而且集群節點類型您希望Databricks工作空間用於在其上運行部署。例如,指定Databricks Runtime 10.4 LTS和一個
i3.xlarge
節點類型:環境:默認的:工作流:-的名字:“covid_analysis_etl_integ”new_cluster:spark_version:“10.4.x-scala2.12”num_workers:1node_type_id:“i3.xlarge”spark_python_task:python_file:“文件:/ /工作/ covid_trends_job.py”-的名字:“covid_analysis_etl_prod”new_cluster:spark_version:“10.4.x-scala2.12”num_workers:1node_type_id:“i3.xlarge”spark_python_task:python_file:“文件:/ /工作/ covid_trends_job.py”參數:[”——刺激”]-的名字:“covid_analysis_etl_raw”new_cluster:spark_version:“10.4.x-scala2.12”num_workers:1node_type_id:“i3.xlarge”spark_python_task:python_file:“文件:/ /工作/ covid_trends_job_raw.py”
提示
在本例中,這三個作業定義都是相同的spark_version
而且node_type_id
價值。您可以為不同的作業定義使用不同的值。您還可以創建共享值並跨作業定義重用它們,以減少鍵入錯誤和代碼維護。看到YAML的例子dbx
文檔。
瀏覽代碼示例
在你設置代碼示例,使用以下信息了解如何在ide-demo / ide-best-practices
文件夾的工作。
測試
單元測試
的測試/文檔
文件中包含的一小部分數據covid-hospitalizations.csv
為測試目的歸檔。的測試/ transforms_test.py
的單元測試covid_analysis / transforms.py
文件。
單元測試運行器
的pytest.ini
文件包含用於運行測試的配置選項pytest.看到pytest.ini而且配置選項在pytest
文檔。
的.coveragerc
文件包含用於Python代碼覆蓋率度量的配置選項coverage.py.看到配置引用在coverage.py
文檔。
的讓
文件的一個子集unit-requirements.txt
您之前運行的文件皮普
,包含單元測試也依賴的包列表。
包裝
的setup . py
文件提供要在控製台(控製台腳本)上運行的命令,例如皮普
命令,用於打包Python項目setuptools.看到入口點在setuptools
文檔。
其他文件
在這個代碼示例中還有一些之前沒有描述過的文件:
的
.github /工作流
文件夾包含三個文件,databricks_pull_request_tests.yml
,onpush.yml
,onrelease.yaml
,它們表示GitHub操作,這些操作將在後麵介紹GitHub的行為部分。的
.gitignore
file包含Git為您的repo忽略的本地文件夾和文件列表。
運行代碼示例
你可以用dbx
指示Databricks按需在遠程工作空間中運行代碼示例,如下一小節所述。或者你可以使用GitHub動作讓GitHub運行代碼樣例,每次您將代碼更改推送到您的GitHub回購。
使用dbx運行
的內容安裝
covid_analysis
文件夾作為Python中的一個包setuptools
發展模式從目錄的根目錄運行以下命令dbx
項目(例如ide-demo / ide-best-practices
文件夾)。一定要加上點(.
)在命令的末尾:PIP install -e。
此命令創建一個
covid_analysis.egg-info
類已編譯版本的信息covid_analysis / __init__ . py
而且covid_analysis / transforms.py
文件。運行以下命令運行測試:
pytest測試/
測試結果顯示在終端中。所有四個測試都應顯示通過。
提示
有關測試的其他方法,包括R和Scala筆記本的測試,請參見筆記本的單元測試.
可選地,通過運行以下命令獲取測試的測試覆蓋率指標:
覆蓋運行-m pytest tests/
請注意
如果有消息顯示
報道
找不到,運行皮普安裝報道
,然後再試一次。要查看測試覆蓋率結果,運行以下命令:
覆蓋率報告-m
如果所有四個測試都通過,則發送
dbx
項目的內容到您的Databricks工作空間,通過運行以下命令:DBX部署——環境=默認的
控件中指定的位置發送有關項目及其運行的信息
workspace_directory
對象中的.dbx / project.json
文件。控件中指定的位置發送項目的內容
artifact_location
對象中的.dbx / project.json
文件。通過運行以下命令,在您的工作空間中運行代碼的預生產版本:
DBX啟動covid_analysis_etl_integ
終端上顯示運行結果的鏈接。它應該看起來像這樣:
https:// < your-workspace-instance-id > / ? o=1234567890123456#工作/ 123456789012345 / / 12345運行
在您的web瀏覽器中按此鏈接查看運行結果。
通過運行以下命令,在您的工作空間中運行代碼的生產版本:
DBX啟動covid_analysis_etl_prod
終端上顯示運行結果的鏈接。它應該看起來像這樣:
https:// < your-workspace-instance-id > / ? o=1234567890123456#工作/ 123456789012345 / / 23456運行
在您的web瀏覽器中按此鏈接查看運行結果。
運行與GitHub動作
在項目的.github /工作流
文件夾,onpush.yml
而且onrelease.yml
GitHub Actions文件做以下工作:
每次推到以
v
,使用dbx
部署covid_analysis_etl_prod
的工作。在每次推送時,它不是指向以
v
:使用
pytest
來運行單元測試。使用
dbx
中指定的文件covid_analysis_etl_integ
作業轉移到遠程工作區。使用
dbx
中指定的已部署文件covid_analysis_etl_integ
作業,跟蹤此運行直到它完成。
請注意
一個額外的GitHub動作文件,databricks_pull_request_tests.yml
,作為模板提供給您進行實驗,而不會影響onpush.yml
而且onrelease.yml
GitHub動作文件。您可以在沒有databricks_pull_request_tests.yml
GitHub動作文件。本文沒有介紹它的用法。
的子部分描述如何設置和運行onpush.yml
而且onrelease.yml
GitHub動作文件。
設置使用GitHub動作
中的說明設置Databricks工作空間CI/CD的服務主體.這包括以下行動:
創建Databricks服務主體。
為Databricks服務主體創建Databricks訪問令牌。
作為一項安全最佳實踐,Databricks建議您為Databricks服務主體使用Databricks訪問令牌,而不是為您的工作空間用戶使用Databricks個人訪問令牌,以使GitHub能夠通過Databricks工作空間進行身份驗證。
在創建Databricks服務主體及其Databricks訪問令牌之後,停止並記錄Databricks訪問令牌值,您將在下一節中使用它。
運行GitHub Actions
步驟1:發布克隆的回購
在Visual Studio Code中,在側邊欄中單擊GitHub圖標。如果圖標不可見,請啟用GitHub拉請求和問題通過擴展視圖(查看> Extensions)第一。
如果登錄按鈕可見,單擊它,並按照屏幕上的說明登錄到您的GitHub帳戶。
在菜單欄上,單擊查看>命令麵板、類型
發布來GitHub
,然後按發布到GitHub.選擇一個選項,以發布您的克隆回購到您的GitHub帳戶。
第二步:在回購中添加加密的秘密
在GitHub網站為您發布的回購,按照指示為存儲庫創建加密秘密,用於以下加密機密:
創建一個名為
DATABRICKS_HOST
,設置為您的工作區實例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.eheci.com
.創建一個名為
DATABRICKS_TOKEN
,設置為Databricks服務主體的Databricks訪問令牌的值。