使用Databricks的IDE
您可以使用第三方集成开发环境(ide)与Databricks进行软件开发。其中一些ide包括以下内容:
您可以使用这些ide以Databricks支持的编程语言(包括以下语言)进行软件开发:
为了演示这是如何工作的,本文描述了一个基于python的代码示例你可以在任何python兼容的IDE中使用。具体来说,本文描述了如何在Visual Studio代码,提供以下开发人员生产力特性:
本文使用dbx由Databricks Labs开发连同Visual Studio Code一起提交代码示例到远程Databricks工作空间.dbx
指示数据库在Databricks上编排数据处理工作流在Databricks上运行提交的代码集群工作在那个工作空间里。
您可以使用流行的第三方Git提供者进行版本控制、代码的持续集成、持续交付或持续部署(CI/CD)。对于版本控制,这些Git提供程序包括以下内容:
Azure DevOps(Azure中国地区不可用)
CI / CD,dbx
支持以下CI/CD平台:bob体育客户端下载
为了演示版本控制和CI/CD如何工作,本文描述了如何使用Visual Studio Code,dbx
,以及此代码示例,以及GitHub和GitHub Actions。
代码示例需求
要使用此代码示例,您必须具备以下条件:
在您的Databricks帐户中有一个Databricks工作区。创建一个工作区如果你还没有。
一个GitHub账户。创建一个GitHub帐户,如果你还没有的话。
另外,在你的本地开发机器上,你必须有以下文件:
Python3.8或以上版本。
您应该使用与目标集群上安装的Python版本相匹配的Python版本。要获取安装在现有集群上的Python版本,可以使用集群的Python版本网络终端运行
python——版本
命令。中“系统环境”一节Databricks运行时发布获取目标集群的Databricks Runtime版本。在任何情况下,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的repo,做以下工作:
从owid / covid-19-data在GitHub repo。
为特定的ISO国家代码过滤数据。
根据数据创建数据透视表。
对数据进行数据清理。
将代码逻辑模块化为可重用的函数。
单元测试函数。
提供了
dbx
项目配置和设置使代码能够将数据写入远程Databricks工作空间中的Delta表。
设置代码示例
在你有了需求对于这个代码示例,完成以下步骤开始使用代码示例。
请注意
这些步骤不包括为CI/CD设置此代码示例。您不需要设置CI/CD来运行此代码示例。如果稍后要设置CI/CD,请参见使用GitHub操作运行.
步骤1:创建Python虚拟环境
在终端上创建一个空白文件夹,以包含此代码示例的虚拟环境。这些指令使用名为
ide-demo
.您可以给这个文件夹起任何名称。如果使用不同的名称,请在本文中替换该名称。创建文件夹后,切换到该文件夹,然后从该文件夹启动Visual Studio Code。一定要包括点(.
)在代码
命令。Linux和macOS:
mkdir ide-democdide演示代码。
提示
如果你得到错误
命令不发现:代码
,请参阅从命令行启动在微软网站上。Windows:
医学博士ide-democdide-demo代码.
在Visual Studio Code中,在菜单栏上单击查看“>终端”.
的词根
ide-demo
文件夹,运行pipenv
命令,其中<版本>
例如,您已经在本地安装的Python的目标版本(并且,理想情况下,该版本与您的目标集群的Python版本匹配)3.8.14
.Pipenv——python <版本>
注意
Virtualenv位置
属性的输出中的pipenv
命令,因为您将在下一步中需要它。选择目标Python解释器,然后激活Python虚拟环境:
在菜单栏上,单击查看>命令面板、类型
Python:选择
,然后按Python:选择解释器.在您刚刚创建的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 CLI。要做到这一点,在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 CLI身份验证你必须现在就做。要确认已设置身份验证,请运行以下基本命令以获取有关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 Actions文件。控件也可以运行此代码样例databricks_pull_request_tests.yml
GitHub Actions文件。本文没有介绍它的用法。
方法的设置和运行onpush.yml
而且onrelease.yml
GitHub Actions文件。
设置使用GitHub动作
中的说明设置Databricks工作区CI/CD的服务主体.这包括以下操作:
创建Databricks服务主体。
为Databricks服务主体创建Databricks访问令牌。
作为安全最佳实践,Databricks建议您为Databricks服务主体使用Databricks访问令牌,而不是为您的工作空间用户使用Databricks个人访问令牌,以使GitHub能够对您的Databricks工作空间进行身份验证。
创建Databricks服务主体及其Databricks访问令牌之后,请停止并记录Databricks访问令牌值,该值将在下一节中使用。
运行GitHub Actions
步骤1:发布克隆的回购
在Visual Studio Code的侧栏中,单击GitHub图标。如果图标不可见,请启用GitHub拉请求和问题延伸至扩展视图(查看>扩展)第一。
如果登录按钮可见,单击它,并按照屏幕上的说明登录到您的GitHub帐户。
在菜单栏上,单击查看>命令面板、类型
发布来GitHub
,然后按发布到GitHub.选择一个选项,以发布您的克隆回购到您的GitHub帐户。
步骤2:将加密的秘密添加到您的回购
在GitHub网站上发布的回购,按照中的说明为存储库创建加密的秘密,以获取以下加密机密:
创建一个加密的秘密
DATABRICKS_HOST
,设置为工作空间实例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.neidfyre.com
.创建一个加密的秘密
DATABRICKS_TOKEN
,设置为Databricks服务主体的Databricks访问令牌的值。
步骤3:创建并发布一个分支到你的repo
在Visual Studio Code中,在源控制视图(查看“>源控制”),按...(视图和更多操作)图标。
点击分支>创建分支From.
例如,为分支输入一个名称
我的枝
.例如,选择要从中创建分支的分支主要.
对本地回购中的一个文件进行小更改,然后保存该文件。类中的代码注释进行一些小更改
测试/ transforms_test.py
文件。在源控制查看,单击...(视图和更多操作)图标。
点击变更>阶段所有变更.
单击...(视图和更多操作)图标。
点击提交>提交分期执行.
为提交输入一条消息。
单击...(视图和更多操作)图标。
点击分支>发布分支.