使用dbx Visual Studio代碼

提示

磚擴展Visual Studio代碼提供了一種替代方法使用dbx與Visual Studio代碼。然而,磚擴展Visual Studio代碼是在公共預覽,它尚未提供一些dbx特性,比如定義多個部署環境和多個部署工作流,以及提供CI / CD項目模板。

本文描述了一個麵向代碼示例你可以使用在任何Python-compatible IDE。具體地說,本文描述了如何使用這段代碼示例Visual Studio代碼,它提供了開發人員的生產力功能如下:

本文使用dbx的磚實驗室隨著Visual Studio代碼提交代碼示例遠程數據磚工作空間dbx指示磚介紹磚工作流提交的代碼運行在磚上集群工作在工作區中。

您可以使用Git流行的第三方供應商用於版本控製和持續集成和持續交付或持續部署(CI / CD)的代碼。Git版本控製,這些提供者包括以下:

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

為了演示版本控製和CI / CD可以工作,本文描述了如何使用Visual Studio代碼,dbx,這個代碼示例,GitHub和GitHub的行動。

代碼示例需求

使用這個代碼示例,你必須有以下:

此外,本地開發機器上,你必須有以下:

  • Python版本3.8或更高版本。

    您應該使用一個匹配的版本的Python安裝在你的目標集群。Python的版本,安裝在現有的集群中,您可以使用集群網絡終端運行python——版本命令。看到的“係統環境”一節磚的運行時版本磚的運行時版本為目標集群。在任何情況下,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或低於0.17版本,設置身份驗證

    請注意

    你不需要安裝遺留數據磚CLI(磚CLI的0.17版本)。你可以安裝它在之後的代碼示例設置部分。如果你想安裝它之後,你一定記得當時設置身份驗證。

  • Visual Studio代碼

  • Python擴展Visual Studio代碼。

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

  • Git

的代碼示例

Python代碼示例本文中可用磚/ ide-best-practices在GitHub回購,如下:

  1. 得到的數據owid / covid-19-data在GitHub回購。

  2. 過濾器的數據為一個特定的ISO國家代碼。

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

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

  5. 為可重用功能模塊化的代碼邏輯。

  6. 單元測試的功能。

  7. 提供了dbx項目配置和設置啟用代碼寫數據到三角洲表在一個偏遠的磚工作區。

設置代碼示例

後你有需求在這段代碼示例中,完成以下步驟開始使用代碼示例。

請注意

這些步驟不包括這個代碼示例設置CI / CD。你不需要設置CI / CD運行這段代碼示例。如果你想設置CI / CD後,明白了使用GitHub運行操作

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

  1. 從您的終端,創建一個空白的文件夾包含一個虛擬環境代碼示例。這些指令使用父文件夾命名ide-demo。你可以給這個文件夾任何你想要的名字。如果你使用一個不同的名稱,取代本文的名字。創建的文件夾後,切換到它,然後開始Visual Studio代碼從文件夾中。一定要包括點(後)代碼命令。

    對於Linux和macOS:

    mkdir ide-democdide-demo代碼。

    提示

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

    Windows:

    醫學博士ide-democdide-demo代碼
  2. 在Visual Studio代碼,在菜單欄,點擊視圖>終端

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

    pipenv——python <版本>

    記下的Virtualenv位置價值的輸出pipenv命令,如您需要在下一步。

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

    1. 在菜單欄,點擊視圖>命令麵板、類型Python:選擇,然後單擊Python:選擇翻譯

    2. 在Python的路徑選擇Python解釋器您剛剛創建的虛擬環境。(這條路是上市的Virtualenv位置價值的輸出pipenv命令。)

    3. 在菜單欄,點擊視圖>命令麵板、類型終端:創建,然後單擊終端:創建新的終端

    4. 確保你的命令提示符顯示pipenv殼。確認,您應當會看到類似(<用戶名>)之前你的命令提示符。如果你沒有看到它,運行以下命令:

      pipenv殼

      退出pipenv殼,運行命令退出,括號中消失。

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

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

  1. 在Visual Studio代碼,打開ide-demo文件夾(文件>打開文件夾),如果不是已經打開。

  2. 點擊視圖>命令麵板、類型Git:克隆,然後單擊Git:克隆

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

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

第三步:安裝代碼示例的依賴性

  1. 安裝的版本dbx和磚CLI或低於0.17版本的兼容版本的Python。要做到這一點,從你的終端,在Visual Studio代碼從你ide-demo文件夾和一個pipenvshell激活(pipenv殼牌),運行以下命令:

    pip安裝dbx
  2. 確認dbx安裝。要做到這一點,運行以下命令:

    dbx——版本

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

    如果版本號低於0.8.0,升級dbx通過運行下麵的命令,然後再次檢查版本號:

    pip安裝dbx——dbx升級版本#還是……python - m pip安裝dbx——dbx升級版本
  3. 當你安裝dbx遺留數據磚CLI(磚CLI版本0.17)會自動安裝。確認遺留數據磚安裝CLI(磚CLI的0.17版本),運行以下命令:

    磚,版本

    如果返回磚CLI的0.17版本,遺留數據磚CLI安裝。

  4. 如果您還沒有設置遺留數據磚CLI(磚CLI的0.17版本)身份驗證,你必須現在就做。確認身份驗證設置,基本運行以下命令來獲得一些關於磚工作區的摘要信息。一定要包括斜杠(/後)ls子命令:

    磚工作區ls /

    如果一個root文件夾名稱列表返回您的工作區,身份驗證設置。

  5. 安裝Python包,這段代碼示例取決於。要做到這一點,從運行以下命令ide-demo / ide-best-practices文件夾:

    pip安裝- r unit-requirements.txt
  6. 確認代碼示例的安裝依賴包。要做到這一點,運行以下命令:

    皮普列表

    如果包中列出unit-requirements.txt文件在這個列表,安裝依賴包。

    請注意

    中列出的文件為特定的包的版本。為了更好的兼容性,可以交叉引用這些版本集群節點類型你希望你的磚工作區用於部署運行後。看到您的集群的“係統環境”一節的磚在運行時版本磚的運行時版本

步驟4:定製的代碼示例數據磚工作區

  1. 定製的回購dbx項目設置。要做到這一點,.dbx / project.json文件,改變的價值配置文件對象從默認的這個概要文件的名稱相匹配的一個遺留的磚你設置身份驗證CLI(磚CLI的版本0.17)。如果你沒有設置任何非默認配置文件,離開了默認的為是。例如:

    {“環境”:{“默認”:{“配置文件”:“默認”,“storage_type”:“mlflow”,“屬性”:{“workspace_directory”:“/共享/ dbx / covid_analysis”,“artifact_location”:“dbfs: /共享/ dbx /項目/ covid_analysis”}}},“inplace_jinja_support”:}
  2. 自定義dbx項目的部署設置。要做到這一點,conf / deployment.yml文件,改變的價值spark_versionnode_type_id對象從10.4.x-scala2.12m6gd.large的磚運行時版本字符串集群節點類型你想讓你的磚工作區用於部署運行。

    例如,指定運行時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_versionnode_type_id價值。您可以使用不同的值定義為不同的工作。您還可以創建共同的價值觀和重用它們在工作定義,減少打字錯誤和代碼維護。看到YAML的例子dbx文檔。

探索代碼示例

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

代碼模塊化

Unmodularized代碼

工作/ covid_trends_job_raw.py文件是一個unmodularized版本的代碼邏輯。您可以運行該文件本身。

模塊化的代碼

工作/ covid_trends_job.py文件是一個模塊化的版本的代碼邏輯。這個文件依賴於共享代碼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.yml,onpush.yml,onrelease.yaml,表示GitHub的行動,在後麵介紹GitHub的行為部分。

  • .gitignore文件包含一個本地文件夾和文件列表,Git忽略了回購。

運行該代碼示例

您可以使用dbx你的本地機器上指導磚按需運行遠程工作空間中的代碼示例,在下一小節中所描述的。或者你可以使用GitHub的行為GitHub運行代碼示例每次代碼更改推到GitHub回購。

使用dbx運行

  1. 安裝的內容covid_analysis文件夾在Python包setuptools發展模式通過運行下麵的命令從你的根源dbx項目(例如,ide-demo / ide-best-practices文件夾)。一定要包括點()結束時,這個命令:

    pip安裝- e。

    這個命令創建一個covid_analysis.egg-info文件夾,其中包含編譯後的版本的信息covid_analysis / __init__ . pycovid_analysis / transforms.py文件。

  2. 運行測試通過運行下麵的命令:

    pytest測試/

    測試的結果顯示在終端。所有四個測試應該顯示為通過。

    提示

    額外的測試方法,包括檢測R和Scala筆記本,看到的單元測試的筆記本

  3. 可選地,獲得您的測試的測試覆蓋度量通過運行下麵的命令:

    覆蓋運行- m pytest測試/

    請注意

    如果將顯示一條消息報道無法找到運行皮普安裝報道,再試一次。

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

    覆蓋率報告- m
  4. 如果通過所有四個測試,發送dbx項目的內容到你的磚工作區,通過運行下麵的命令:

    dbx部署——環境=默認的

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

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

  5. 運行前期製作版本的代碼在您的工作區,通過運行下麵的命令:

    dbx發射covid_analysis_etl_integ

    鏈接顯示在終端運行的結果。它應該是這樣的:

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

    按照這個鏈接在您的web瀏覽器中看到在您的工作空間中運行的結果。

  6. 生產版本的代碼運行在您的工作區,通過運行下麵的命令:

    dbx發射covid_analysis_etl_prod

    鏈接顯示在終端運行的結果。它應該是這樣的:

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

    按照這個鏈接在您的web瀏覽器中看到在您的工作空間中運行的結果。

使用GitHub運行操作

在項目的.github /工作流文件夾,onpush.ymlonrelease.ymlGitHub行動文件執行以下操作:

  • 在每一個開始推動一個標簽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.ymlonrelease.ymlGitHub的操作文件。您可以運行這段代碼示例沒有databricks_pull_request_tests.ymlGitHub的操作文件。使用本文中未涉及。

接下來的部分描述如何設置和運行onpush.ymlonrelease.ymlGitHub的操作文件。

設置為使用GitHub的行動

設置數據磚工作區遵循指令服務主體對CI / CD。這包括以下操作:

  1. 創建一個磚服務主體。

  2. 創建一個磚磚服務主體的訪問令牌。

作為一個安全最佳實踐,磚建議你使用磚磚服務主體的訪問令牌,而不是磚個人工作區用戶訪問令牌,用於啟用GitHub與磚工作區進行身份驗證。

創建數據磚後服務主體及其磚訪問令牌的,停止並記下磚訪問令牌的值,你將在下一節中使用。

GitHub運行操作

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

  2. 如果登錄可見的按鈕,單擊它,按照屏幕上的指示標誌在GitHub賬戶。

  3. 在菜單欄,點擊視圖>命令麵板、類型發布GitHub,然後單擊發布到GitHub

  4. 選擇一個選項來發布您的克隆回購GitHub賬戶。

步驟2:添加加密機密回購

在GitHub網站公布回購,聽從指示為存儲庫創建加密的秘密對於以下加密的秘密:

  • 創建一個加密的秘密命名DATABRICKS_HOST將你的價值工作區實例URL例如,https://dbc-a1b2345c-d6e7.cloud.m.eheci.com

  • 創建一個加密的秘密命名DATABRICKS_TOKEN的值,設置為磚磚服務主體的訪問令牌。

步驟3:創建和發布一個分支回購
  1. 在Visual Studio代碼,源控製視圖(視圖>源代碼控製),點擊(視圖和更多的行動)圖標。

  2. 點擊分支>創建分支

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

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

  5. 做一個小改變的文件在您的本地回購,然後保存文件。例如,做一個小改變的代碼注釋測試/ transforms_test.py文件。

  6. 源控製視圖中,單擊(視圖和更多的行動)圖標。

  7. 點擊>變化階段的所有更改

  8. 單擊(視圖和更多的行動)圖標。

  9. 點擊提交>提交了

  10. 輸入消息的提交。

  11. 單擊(視圖和更多的行動)圖標。

  12. 點擊分支>發布分支

步驟4:創建一個請求和合並
  1. 到GitHub網站公布回購,https://github/ < your-GitHub-username > / ide-best-practices

  2. 把請求選項卡,最近我的枝上有推,點擊比較&拉請求

  3. 點擊創建拉請求

  4. 在拉請求頁麵,等待圖標旁邊CI流水線/ ci-pipeline(推)顯示一個綠色的複選標記。(它可能會花幾分鍾為幾分鍾圖標出現。)如果有一個紅色的X,而不是一個綠色的複選標記,點擊細節為了找到原因。如果圖標或細節不再顯示,點擊顯示所有檢查

  5. 如果出現綠色複選標記,合並請求拉進主要分支機構通過點擊合並將請求