使用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提供程序包括以下內容:

CI / CD,dbx支持以下CI/CD平台:Beplay体育安卓版本

為了演示版本控製和CI/CD是如何工作的,本文描述了如何使用Visual Studio Code,dbx,以及這個代碼示例,以及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現在。您可以在稍後的代碼示例中安裝它設置部分。

  • 創建Python的方法虛擬環境以確保您正在使用正確的Python版本和包依賴dbx項目。本文將介紹pipenv

  • 磚CLI,與身份驗證

    請注意

    現在不需要安裝Databricks命令行。您可以在稍後的代碼示例中安裝它設置部分。如果您想稍後安裝它,則必須記得在那個時候設置身份驗證。

  • Visual Studio代碼

  • PythonVisual Studio Code擴展。

  • GitHub拉請求和問題Visual Studio Code擴展。

  • Git

關於代碼示例

本文的Python代碼示例,可在磚/ ide-best-practices在GitHub回購,做了以下:

  1. 獲取數據。owid / covid-19-data在GitHub回購。

  2. 篩選特定ISO國家代碼的數據。

  3. 從數據創建一個透視表。

  4. 對數據執行數據清理。

  5. 將代碼邏輯模塊化為可重用的函數。

  6. 單元測試函數。

  7. 提供了dbx項目配置和設置,以使代碼能夠將數據寫入遠程Databricks工作空間中的Delta表。

設置代碼示例

在你有了需求在準備好這個代碼樣例之後,完成以下步驟開始使用代碼樣例。

請注意

這些步驟不包括為CI/CD設置此代碼示例。您不需要設置CI/CD來運行此代碼示例。如果您想稍後設置CI/CD,請參閱運行與GitHub動作

步驟1:創建一個Python虛擬環境

  1. 從終端創建一個空白文件夾,以包含此代碼示例的虛擬環境。這些指令使用名為ide-demo.你可以給這個文件夾起任何名字。如果使用不同的名稱,請在本文中替換該名稱。創建文件夾後,切換到該文件夾,然後從該文件夾啟動Visual Studio Code。一定要加上點()後代碼命令。

    對於Linux和macOS:

    mkdir ide-democd演示代碼。

    提示

    如果你得到了錯誤命令發現:代碼,請參閱從命令行啟動在微軟網站上。

    Windows:

    醫學博士ide-democdide-demo代碼
  2. 在Visual Studio Code中,在菜單欄上單擊查看“> Terminal”

  3. 從根的ide-demo文件夾,運行pipenv使用以下選項命令,其中<版本>例如,您已經在本地安裝的Python的目標版本(並且,理想情況下,是與您的目標集群的Python版本相匹配的版本)3.8.14

    Pipenv——python < >版本

    記一下Virtualenv位置的輸出中pipenv命令,因為您將在下一步中需要它。

  4. 選擇目標Python解釋器,然後激活Python虛擬環境:

    1. 在菜單欄上,單擊查看>命令麵板、類型Python:選擇,然後按Python:選擇Interpreter

    2. 在剛剛創建的Python虛擬環境的路徑中選擇Python解釋器。(該路徑被列為Virtualenv位置的輸出中pipenv命令。)

    3. 在菜單欄上,單擊查看>命令麵板、類型終端:創建,然後按終端:新建終端

    4. 確保命令提示符表明您處於pipenv殼。要確認,你應該會看到如下內容(<用戶名>)在命令提示符之前。如果沒有,執行以下命令:

      pipenv殼

      退出。pipenvShell,執行命令退出,括號消失。

    有關更多信息,請參見在VS Code中使用Python環境在Visual Studio Code文檔中。

步驟2:從GitHub克隆代碼示例

  1. 在Visual Studio Code中,打開ide-demo文件夾(打開文件夾),如果它還沒有打開。

  2. 點擊查看>命令麵板、類型Git:克隆,然後按Git:克隆

  3. 提供存儲庫URL或選擇存儲庫源,輸入https://github.com/databricks/ide-best-practices

  4. 瀏覽到您的ide-demo文件夾,然後單擊選擇存儲庫位置

步驟3:安裝代碼示例的依賴項

  1. 安裝版本的dbx以及與您的Python版本兼容的Databricks命令行。要做到這一點,在Visual Studio Code從您的終端,從您的ide-demo帶有pipenv外殼已激活(pipenv殼牌),執行以下命令:

    PIP安裝DBX
  2. 確認dbx安裝。為此,運行以下命令:

    dbx——版本

    如果返回版本號,dbx安裝。

    如果版本號低於0.8.0,請升級dbx執行如下命令,重新檢查版本號。

    PIP安裝DBX——升級DBX——版本#或…Python -m PIP install DBX——upgrade DBX——version
  3. 安裝時dbx,同時自動安裝Databricks命令行。使用實例確認已安裝Databricks命令行。

    磚,版本

    如果返回版本號,表示已安裝Databricks命令行。

  4. 如果您還沒有設置Databricks命令行身份驗證你必須現在就做。要確認已設置身份驗證,請運行以下基本命令來獲取有關Databricks工作空間的一些摘要信息。一定要包括正斜杠(/)後ls子命令:

    Databricks工作區ls /

    如果返回工作空間的根級文件夾名稱列表,則設置身份驗證。

  5. 安裝此代碼示例所依賴的Python包。要做到這一點,請從ide-demo / ide-best-practices文件夾:

    PIP install -r unit-requirements.txt
  6. 確認安裝了代碼示例的依賴包。為此,運行以下命令:

    皮普列表

    中列出的包而且unit-requirements.txt文件位於此列表中的某個位置,安裝了相關的包。

    請注意

    列出的文件用於特定的包版本。為獲得更好的兼容性,可以將這些版本與集群節點類型您希望Databricks工作空間稍後使用它來運行部署。請參閱您的集群的Databricks運行時版本的“係統環境”部分Databricks運行時版本

步驟4:為Databricks工作空間定製代碼示例

  1. 定製回購dbx項目設置。要做到這一點,在.dbx / project.json文件,更改的值配置文件對象從默認的與您使用Databricks CLI為身份驗證設置的配置文件的名稱相匹配。如果沒有設置任何非默認配置文件,請離開默認的為是。例如:

    “環境”“默認”“配置文件”“默認”“storage_type”“mlflow”“屬性”“workspace_directory”“/共享/ dbx / covid_analysis”“artifact_location”“dbfs: /共享/ dbx /項目/ covid_analysis”},“inplace_jinja_support”
  2. 自定義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_clusterspark_version“10.4.x-scala2.12”num_workers1node_type_id“i3.xlarge”spark_python_taskpython_file“文件:/ /工作/ covid_trends_job.py”-的名字“covid_analysis_etl_prod”new_clusterspark_version“10.4.x-scala2.12”num_workers1node_type_id“i3.xlarge”spark_python_taskpython_file“文件:/ /工作/ covid_trends_job.py”參數”——刺激”-的名字“covid_analysis_etl_raw”new_clusterspark_version“10.4.x-scala2.12”num_workers1node_type_id“i3.xlarge”spark_python_taskpython_file“文件:/ /工作/ covid_trends_job_raw.py”

提示

在本例中,這三個作業定義都是相同的spark_version而且node_type_id價值。您可以為不同的作業定義使用不同的值。您還可以創建共享值並跨作業定義重用它們,以減少鍵入錯誤和代碼維護。看到YAML的例子dbx文檔。

瀏覽代碼示例

在你設置代碼示例,使用以下信息了解如何在ide-demo / ide-best-practices文件夾的工作。

代碼模塊化

Unmodularized代碼

工作/ covid_trends_job_raw.pyFile是代碼邏輯的非模塊化版本。您可以單獨運行這個文件。

模塊化的代碼

工作/ covid_trends_job.pyFile是代碼邏輯的模塊化版本。文件中的共享代碼covid_analysis / transforms.py文件。的covid_analysis / __init__ . py文件處理covide_analysis文件夾作為一個包含包。

測試

單元測試

測試/文檔文件中包含的一小部分數據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.ymlonpush.yml,onrelease.yaml,它們表示GitHub操作,這些操作將在後麵介紹GitHub的行為部分。

  • .gitignorefile包含Git為您的repo忽略的本地文件夾和文件列表。

運行代碼示例

你可以用dbx指示Databricks按需在遠程工作空間中運行代碼示例,如下一小節所述。或者你可以使用GitHub動作讓GitHub運行代碼樣例,每次您將代碼更改推送到您的GitHub回購。

使用dbx運行

  1. 的內容安裝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文件。

  2. 運行以下命令運行測試:

    pytest測試/

    測試結果顯示在終端中。所有四個測試都應顯示通過。

    提示

    有關測試的其他方法,包括R和Scala筆記本的測試,請參見筆記本的單元測試

  3. 可選地,通過運行以下命令獲取測試的測試覆蓋率指標:

    覆蓋運行-m pytest tests/

    請注意

    如果有消息顯示報道找不到,運行皮普安裝報道,然後再試一次。

    要查看測試覆蓋率結果,運行以下命令:

    覆蓋率報告-m
  4. 如果所有四個測試都通過,則發送dbx項目的內容到您的Databricks工作空間,通過運行以下命令:

    DBX部署——環境默認的

    控件中指定的位置發送有關項目及其運行的信息workspace_directory對象中的.dbx / project.json文件。

    控件中指定的位置發送項目的內容artifact_location對象中的.dbx / project.json文件。

  5. 通過運行以下命令,在您的工作空間中運行代碼的預生產版本:

    DBX啟動covid_analysis_etl_integ

    終端上顯示運行結果的鏈接。它應該看起來像這樣:

    https:// < your-workspace-instance-id > / ? o1234567890123456#工作/ 123456789012345 / / 12345運行

    在您的web瀏覽器中按此鏈接查看運行結果。

  6. 通過運行以下命令,在您的工作空間中運行代碼的生產版本:

    DBX啟動covid_analysis_etl_prod

    終端上顯示運行結果的鏈接。它應該看起來像這樣:

    https:// < your-workspace-instance-id > / ? o1234567890123456#工作/ 123456789012345 / / 23456運行

    在您的web瀏覽器中按此鏈接查看運行結果。

運行與GitHub動作

在項目的.github /工作流文件夾,onpush.yml而且onrelease.ymlGitHub Actions文件做以下工作:

  • 每次推到以v,使用dbx部署covid_analysis_etl_prod的工作。

  • 在每次推送時,它不是指向以v

    1. 使用pytest來運行單元測試。

    2. 使用dbx中指定的文件covid_analysis_etl_integ作業轉移到遠程工作區。

    3. 使用dbx中指定的已部署文件covid_analysis_etl_integ作業,跟蹤此運行直到它完成。

請注意

一個額外的GitHub動作文件,databricks_pull_request_tests.yml,作為模板提供給您進行實驗,而不會影響onpush.yml而且onrelease.ymlGitHub動作文件。您可以在沒有databricks_pull_request_tests.ymlGitHub動作文件。本文沒有介紹它的用法。

的子部分描述如何設置和運行onpush.yml而且onrelease.ymlGitHub動作文件。

設置使用GitHub動作

中的說明設置Databricks工作空間CI/CD的服務主體.這包括以下行動:

  1. 創建Databricks服務主體。

  2. 為Databricks服務主體創建Databricks訪問令牌。

作為一項安全最佳實踐,Databricks建議您為Databricks服務主體使用Databricks訪問令牌,而不是為您的工作空間用戶使用Databricks個人訪問令牌,以使GitHub能夠通過Databricks工作空間進行身份驗證。

在創建Databricks服務主體及其Databricks訪問令牌之後,停止並記錄Databricks訪問令牌值,您將在下一節中使用它。

運行GitHub Actions

步驟1:發布克隆的回購
  1. 在Visual Studio Code中,在側邊欄中單擊GitHub圖標。如果圖標不可見,請啟用GitHub拉請求和問題通過擴展視圖(查看> Extensions)第一。

  2. 如果登錄按鈕可見,單擊它,並按照屏幕上的說明登錄到您的GitHub帳戶。

  3. 在菜單欄上,單擊查看>命令麵板、類型發布GitHub,然後按發布到GitHub

  4. 選擇一個選項,以發布您的克隆回購到您的GitHub帳戶。

第二步:在回購中添加加密的秘密

在GitHub網站為您發布的回購,按照指示為存儲庫創建加密秘密,用於以下加密機密:

  • 創建一個名為DATABRICKS_HOST,設置為您的工作區實例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.eheci.com

  • 創建一個名為DATABRICKS_TOKEN,設置為Databricks服務主體的Databricks訪問令牌的值。

步驟3:創建並發布一個分支到您的回購
  1. 在Visual Studio Code中,在源控製視圖(查看“>源代碼控製”),按...視圖和更多操作)圖標。

  2. 點擊創建分支>

  3. 例如,為分支輸入一個名稱我的枝

  4. 例如,選擇要從中創建分支的分支主要

  5. 對本地回購中的一個文件進行微小更改,然後保存該文件。控件中的代碼注釋做一個小的更改測試/ transforms_test.py文件。

  6. 源控製查看,單擊...視圖和更多操作)圖標。

  7. 點擊更改> Stage所有更改

  8. 單擊...視圖和更多操作)圖標。

  9. 點擊提交>

  10. 為提交輸入一條消息。

  11. 單擊...視圖和更多操作)圖標。

  12. 點擊分支>發布分支

步驟4:創建一個pull請求並合並
  1. 去GitHub網站獲取你發布的回購,https://github/ < your-GitHub-username > / ide-best-practices

  2. 把請求Tab,在我的布蘭奇最近有過推特,點擊比較和拉請求

  3. 點擊創建拉請求

  4. 在拉取請求頁麵上,等待旁邊的圖標CI管線/ CI -管線(推送)顯示綠色複選標記。(圖標可能需要幾分鍾的時間才能出現。)如果選中的是紅色的X而不是綠色的複選標記,請單擊細節找出原因。如果圖標或細節不再顯示,點擊顯示所有支票

  5. 如果出現綠色複選標記,則將pull請求合並到主要通過單擊分支合並pull請求