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

CI / CD,dbx支持以下CI/CD平台:bob体育客户端下载

为了演示版本控制和CI/CD如何工作,本文描述了如何使用Visual Studio Code,dbx,以及此代码示例,以及GitHub和GitHub Actions。

代码示例需求

要使用此代码示例,您必须具备以下条件:

另外,在你的本地开发机器上,你必须有以下文件:

  • 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现在。您可以稍后在代码示例中安装它设置部分。

  • 创建Python的方法虚拟环境以确保您使用的Python和包依赖项的正确版本dbx项目。本文涵盖了pipenv

  • 砖CLI,与身份验证

    请注意

    现在不需要安装Databricks命令行。您可以稍后在代码示例中安装它设置部分。如果您想稍后安装它,则必须记住在那时设置身份验证。

  • Visual Studio代码

  • PythonVisual Studio Code扩展。

  • GitHub拉请求和问题Visual Studio Code扩展。

  • Git

关于代码示例

本文的Python代码示例可在砖/ ide-best-practices在GitHub的repo,做以下工作:

  1. owid / covid-19-data在GitHub repo。

  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-democdide演示代码。

    提示

    如果你得到错误命令发现:代码,请参阅从命令行启动在微软网站上。

    Windows:

    医学博士ide-democdide-demo代码
  2. 在Visual Studio Code中,在菜单栏上单击查看“>终端”

  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壳

      退出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 CLI。要做到这一点,在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 CLI身份验证你必须现在就做。要确认已设置身份验证,请运行以下基本命令以获取有关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.py文件是代码逻辑的非模块化版本。您可以单独运行该文件。

模块化的代码

工作/ 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.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 Actions文件。控件也可以运行此代码样例databricks_pull_request_tests.ymlGitHub Actions文件。本文没有介绍它的用法。

方法的设置和运行onpush.yml而且onrelease.ymlGitHub Actions文件。

设置使用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拉请求和问题延伸至扩展视图(查看>扩展)第一。

  2. 如果登录按钮可见,单击它,并按照屏幕上的说明登录到您的GitHub帐户。

  3. 在菜单栏上,单击查看>命令面板、类型发布GitHub,然后按发布到GitHub

  4. 选择一个选项,以发布您的克隆回购到您的GitHub帐户。

步骤2:将加密的秘密添加到您的回购

在GitHub网站上发布的回购,按照中的说明为存储库创建加密的秘密,以获取以下加密机密:

  • 创建一个加密的秘密DATABRICKS_HOST,设置为工作空间实例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.neidfyre.com

  • 创建一个加密的秘密DATABRICKS_TOKEN,设置为Databricks服务主体的Databricks访问令牌的值。

步骤3:创建并发布一个分支到你的repo
  1. 在Visual Studio Code中,在源控制视图(查看“>源控制”),按...视图和更多操作)图标。

  2. 点击分支>创建分支From

  3. 例如,为分支输入一个名称我的枝

  4. 例如,选择要从中创建分支的分支主要

  5. 对本地回购中的一个文件进行小更改,然后保存该文件。类中的代码注释进行一些小更改测试/ transforms_test.py文件。

  6. 源控制查看,单击...视图和更多操作)图标。

  7. 点击变更>阶段所有变更

  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. 如果出现绿色复选标记,则将拉取请求合并到主要点击分支合并拉取请求