dbx的砖实验室

提示

砖扩展Visual Studio代码提供了一种替代方法使用<代码类="docutils literal notranslate">dbx。然而,砖扩展Visual Studio代码是在公共预览,它尚未提供一些<代码类="docutils literal notranslate">dbx特性,比如定义多个部署环境和多个部署工作流,以及提供CI / CD项目模板。

请注意

本文将介绍<代码类="docutils literal notranslate">dbx砖实验室,是按原样提供,不支持通过客户技术支持渠道砖。问题和特性请求可以通过沟通问题页面的databrickslabs / dbx在GitHub回购。

dbx由砖实验室是一个开放源码工具旨在扩展遗留数据砖命令bob下载地址行接口(砖CLI),并提供功能快速开发生命周期和持续集成和持续交付/部署(CI / CD)砖平台。bob体育客户端下载

dbx简化了工作跨多个环境启动和部署过程。它也有助于包您的项目并交付给你的砖环境版本化的方式。CLI-first方式而设计的,它是建立内部积极使用CI / CD作为当地的一部分管道和工具(如当地的ide,包括Visual Studio代码和PyCharm)。

典型的开发流程<代码类="docutils literal notranslate">dbx是:

  1. 创建一个远程存储库Git提供者砖支持的,如果你没有一个远程回购已经可用。

  2. 克隆远程回购到砖工作区中。

  3. 创建或砖笔记本进入你砖的克隆回购工作区。用这个笔记本开始原型代码,你希望你的砖集群来运行。

  4. 加强和模块化笔记本代码通过添加单独的助手类和函数,配置文件,和测试中,切换到使用本地开发机器<代码类="docutils literal notranslate">dbx你喜欢的IDE, Git安装。

  5. 当地开发机器克隆你的远程回购。

  6. 代码从你的笔记本进入一个或多个本地代码文件。

  7. 本地代码时,将你的工作从你当地的回购远程回购。同时,同步你的远程回购砖工作区。

    提示

    或者,您可以使用dbx同步自动同步本地文件的更改与相应的文件在您的工作空间中,在真正的时间。

  8. 继续使用笔记本在你为快速成型砖工作区,并继续验证代码从你的笔记本到您的本地机器上。继续使用您的本地IDE等任务的代码模块化,代码完成、产品毛羽,代码的单元测试,分步调试和对象,不需要现场连接数据砖。

  9. 使用<代码类="docutils literal notranslate">dbx批处理运行您的本地代码在你的目标集群,。(这类似于运行spark-submit脚本在火花的<代码类="docutils literal notranslate">目录启动火花集群上的应用程序)。

  10. 当你准备生产,使用CI / CD平台等bob体育客户端下载GitHub的行为,Azure DevOps,或GitLab自动化运行远程回购的代码在您的集群。

需求

使用<代码类="docutils literal notranslate">dbx,你必须安装以下本地开发机器上,不管你的代码使用Python, Scala,或Java:

  • Python版本3.8或更高版本。

    如果你的代码使用Python,你应该使用一个匹配的版本的Python安装在你的目标集群。Python的版本,安装在现有的集群中,您可以使用集群网络终端运行<代码类="docutils literal notranslate">python——版本命令。看到的“系统环境”一节砖的运行时版本砖的运行时版本为目标集群。

  • 皮普

  • 如果你的代码使用Python, Python方法来创建虚拟环境,确保您使用正确的版本的Python和在你的包的依赖关系<代码类="docutils literal notranslate">dbx项目。本文将介绍pipenv

  • dbx0.8.0或以上版本。你可以安装这个包从Python包指数(PyPI)通过运行<代码类="docutils literal notranslate">皮普安装dbx

    确认<代码类="docutils literal notranslate">dbx安装,运行以下命令:

    dbx——版本

    如果版本号返回,<代码类="docutils literal notranslate">dbx安装。

    如果版本号低于0.8.0,升级<代码类="docutils literal notranslate">dbx通过运行下面的命令,然后再次检查版本号:

    pip安装dbx——dbx升级版本#还是……python - m pip安装dbx——dbx升级版本
  • 砖CLI或低于0.17版本,设置身份验证。遗留数据砖CLI(砖CLI的0.17版)是自动安装时安装<代码类="docutils literal notranslate">dbx。这种身份验证可以设置本地开发机器上的一个或两个以下位置:

    • 在<代码类="docutils literal notranslate">DATABRICKS_HOST和<代码类="docutils literal notranslate">DATABRICKS_TOKEN环境变量(与遗留数据砖CLI 0.8.0版开始)。

    • 在一个砖配置概要文件在你的<代码类="docutils literal notranslate">.databrickscfg文件。

    dbx分别在这两个位置查找身份验证凭证。<代码类="docutils literal notranslate">dbx只使用它找到的第一组匹配的凭证。

    请注意

    dbx不支持使用吗. netrc申请认证,开始与遗留0.17.2砖CLI的版本。检查您的遗留数据砖CLI安装版本,运行命令<代码类="docutils literal notranslate">——版本

  • git推动和同步本地和远程代码更改。

继续说明下列ide之一:

请注意

砖已经验证前面的ide的使用<代码类="docutils literal notranslate">dbx;然而,<代码类="docutils literal notranslate">dbx应该适用于任何IDE。您还可以使用仅没有IDE(终端)

dbx优化与列纵队Python代码文件和编译Scala和Java JAR文件。<代码类="docutils literal notranslate">dbx不使用一列纵队R代码文件或编译代码包。这是因为<代码类="docutils literal notranslate">dbx与就业的API2.02.1,这些api不能运行排成一列纵队R代码文件或编译代码包工作。

Visual Studio代码

完成以下指令开始使用Visual Studio代码与Python<代码类="docutils literal notranslate">dbx

本地开发机器上,您必须安装以下除了将军需求:

遵循以下步骤开始设置<代码类="docutils literal notranslate">dbx项目结构:

  1. 从您的终端,创建一个空白的文件夹中。这些指令使用文件夹命名<代码类="docutils literal notranslate">dbx-demo。你可以给你的<代码类="docutils literal notranslate">dbx项目的根文件夹任何你想要的名字。如果你使用一个不同的名称,取代这个名字在这些步骤。创建的文件夹后,切换到它,然后开始Visual Studio代码从文件夹中。

    对于Linux和macOS:

    mkdir dbx-democddbx-demo代码。

    提示

    如果<代码类="docutils literal notranslate">命令发现:代码显示在您运行<代码类="docutils literal notranslate">代码,请参阅从命令行启动在微软的网站。

    Windows:

    医学博士dbx-democddbx-demo代码
  2. Python在Visual Studio代码中,创建一个虚拟环境为这个项目:

    1. 在菜单栏,点击视图>终端

    2. 的根源<代码类="docutils literal notranslate">dbx-demo文件夹,运行<代码类="docutils literal notranslate">pipenv命令使用以下选项,<代码类="docutils literal notranslate"><版本>是目标的Python版本已经安装在本地(理想情况下,一个版本相匹配你的目标集群的版本的Python),例如<代码类="docutils literal notranslate">3.8.14

      pipenv——python <版本>

      记下的<代码类="docutils literal notranslate">Virtualenv位置价值的输出<代码类="docutils literal notranslate">pipenv命令,如您需要在下一步。

  3. 选择目标Python解释器,然后激活Python虚拟环境:

    1. 在菜单栏,点击视图>命令面板、类型<代码类="docutils literal notranslate">Python:选择,然后单击Python:选择翻译

    2. 在Python的路径选择Python解释器您刚刚创建的虚拟环境。(这条路是上市的<代码类="docutils literal notranslate">Virtualenv位置价值的输出<代码类="docutils literal notranslate">pipenv命令。)

    3. 在菜单栏,点击视图>命令面板、类型<代码类="docutils literal notranslate">终端:创建,然后单击终端:创建新的终端

    有关更多信息,请参见使用Python环境VS代码在Visual Studio代码文档。

  4. 继续创建一个dbx项目

PyCharm

完成以下指令开始使用PyCharm与Python<代码类="docutils literal notranslate">dbx

本地开发机器上,你必须有PyCharm除了一般的安装需求

遵循以下步骤开始设置<代码类="docutils literal notranslate">dbx项目结构:

  1. 在PyCharm,在菜单栏,点击文件>新建项目

  2. 创建项目为您的新项目对话框中,选择一个位置。

  3. 扩大Python解释器:新的Pipenv环境

  4. 选择新环境使用如果尚未选中,然后选择Pipenv从下拉列表中。

  5. 基础翻译中,选择包含Python解释器的位置为目标的Python版本已经安装在本地(理想情况下,一个版本相匹配你的目标集群的Python版本)。

  6. Pipenv可执行中,选择包含您的本地安装的位置<代码类="docutils literal notranslate">pipenv,如果不是已经自动检测。

  7. 如果你想创建一个最小的<代码类="docutils literal notranslate">dbx项目,你想使用<代码类="docutils literal notranslate">main.py文件与最小<代码类="docutils literal notranslate">dbx项目,然后选择创建一个主。py脚本欢迎盒子。否则,这个盒子。

  8. 点击创建

  9. 项目工具窗口中,用鼠标右键单击项目的根文件夹,然后单击打开在>终端

  10. 继续创建一个dbx项目

IntelliJ IDEA

完成以下指令开始使用IntelliJ IDEAScala和<代码类="docutils literal notranslate">dbx。这些指令创建一个最小sbt-based Scala项目,您可以使用开始<代码类="docutils literal notranslate">dbx项目。

本地开发机器上,您必须安装以下除了将军需求:

  • IntelliJ IDEA

  • ScalaIntelliJ IDEA的插件。有关更多信息,请参见发现Scala IntelliJ IDEAIntelliJ IDEA的文档。

  • Java运行时环境(JRE) 8。在任何版本的JRE 8应该工作,砖迄今为止只使用进行验证<代码类="docutils literal notranslate">dbx和IntelliJ IDEA OpenJDK 8 JRE。砖尚未验证的使用<代码类="docutils literal notranslate">dbxIntelliJ IDEA和Java 11。有关更多信息,请参见Java开发工具包(JDK)IntelliJ IDEA的文档。

遵循以下步骤开始设置<代码类="docutils literal notranslate">dbx项目结构:

步骤1:创建一个sbt-based Scala项目

  1. 在IntelliJ IDEA,取决于你的视图,单击项目>新项目orgydF4y2BaFile > New >项目

  2. 新项目对话框中,单击Scala,点击sbt,然后单击下一个

  3. 输入项目名称和项目的位置。

  4. JDK,选择安装的OpenJDK 8 JRE。

  5. sbt,选择的最高可用版本<代码类="docutils literal notranslate">sbt这是上市。

  6. Scala,在理想的情况下,选择的Scala版本相匹配你的目标集群的Scala版本。看到的“系统环境”一节砖的运行时版本砖的运行时版本为目标集群。

  7. 旁边Scala,选择来源箱子如果尚未选中。

  8. 添加一个前缀包前缀。这些步骤使用包前缀<代码类="docutils literal notranslate">com.example.demo。如果你指定一个不同的包前缀,取代包前缀在这些步骤。

  9. 点击完成

步骤2:将对象添加到包中

你可以添加任何所需的对象包中。这个包包含一个对象命名<代码类="docutils literal notranslate">一点

  1. 项目工具窗口(项目视图>工具窗口>),右键单击项目名称主要> src > > scala文件夹,然后单击新的> Scala类

  2. 选择对象和类型对象的名称,然后按下Enter。例如,类型<代码类="docutils literal notranslate">一点。如果你进入一个不同的对象名称在这里,一定要更换名字在这些步骤。

  3. 替换的内容<代码类="docutils literal notranslate">SampleApp.scala用下面的代码文件:

    com例子演示对象一点{def主要(arg游戏:数组(字符串]){}}

步骤3:构建项目

将所需的项目构建设置和依赖项添加到您的项目。这个步骤假设您正在构建一个项目,成立于前面的步骤,它只取决于以下库。

  1. 更换项目的内容<代码类="docutils literal notranslate">build.sbt文件包含以下内容:

    ThisBuild/版本:=“0.1.0-SNAPSHOT”ThisBuild/scalaVersion:=“2.12.14”瓦尔sparkVersion=“3.2.1”懒惰的瓦尔=(项目文件(“。”))设置(的名字:=“dbx-demo”,idePackagePrefix:=一些(“com.example.demo”),libraryDependencies+ =“org.apache.spark”% %“spark-core”%sparkVersionwithSources(),libraryDependencies+ =“org.apache.spark”% %“spark-sql”%sparkVersionwithSources(),libraryDependencies+ =“org.apache.spark”% %“spark-hive”%sparkVersionwithSources())

    在前面的文件,替换:

    • 2.12.14之前你选择的Scala版本的这个项目。

    • 3.2.1之上与之前版本的火花,你选择了这个项目。

    • dbx-demo与您的项目的名称。

    • com.example.demo与您的软件包的名称前缀。

  2. 在菜单栏,点击窗口视图>工具> sbt

  3. sbt工具窗口中,右键单击您的项目的名称,然后单击重载sbt项目。等到<代码类="docutils literal notranslate">sbt完成从互联网下载项目的依赖关系工件存储如Coursier或常春藤在默认情况下,这取决于你的版本<代码类="docutils literal notranslate">sbt。你可以看状态栏的下载进度。如果您添加或更改任何更多的依赖这个项目,您必须为每组重复这个项目重新加载步骤的依赖关系添加或更改。

  4. 在菜单栏,点击IntelliJ IDEA >首选项

  5. 首选项对话框中,单击构建、执行部署> > sbt的构建工具

  6. JVM,因为JRE,选择安装的OpenJDK 8 JRE。

  7. sbt项目中,选择您的项目的名称。

  8. sbt壳中,选择构建

  9. 点击好吧

  10. 在菜单栏,点击构建>构建项目。构建的结果中出现sbt壳工具窗口(窗口视图>工具> sbt壳)。

步骤4:将代码添加到项目中

任何所需的代码添加到您的项目。这个步骤假设您只想添加代码<代码类="docutils literal notranslate">SampleApp.scala文件<代码类="docutils literal notranslate">例子包中。

在项目的<代码类="docutils literal notranslate">src><代码类="docutils literal notranslate">主要><代码类="docutils literal notranslate">scala><代码类="docutils literal notranslate">SampleApp.scala你想要的文件,添加代码<代码类="docutils literal notranslate">dbx批处理运行在你的目标集群。对于基本测试,使用Scala代码示例的部分代码示例

第五步:运行项目

  1. 在菜单栏,点击Run >编辑配置

  2. 运行/调试配置对话框中,单击+(添加新配置)图标,或添加新,或添加新的运行配置

  3. 在下拉列表中,点击sbt任务

  4. 的名字配置,输入一个名称,例如,运行这个程序

  5. 任务,输入<代码类="docutils literal notranslate">~运行

  6. 选择使用sbt壳

  7. 点击好吧

  8. 在菜单栏,点击>跑“运行程序”。出现在运行的结果sbt壳工具窗口。

第六步:构建项目作为一个JAR

您可以添加任何JAR构建设置您的项目,你想要的。这个步骤假设您只希望构建一个JAR,基于项目成立于前面的步骤。

  1. 在菜单栏,点击文件>项目结构

  2. 项目结构对话框中,单击项目设置>工件

  3. 单击+(添加)图标。

  4. 在下拉列表中,选择JAR >从模块依赖关系

  5. 从模块创建JAR对话框中,为模块中,选择您的项目的名称。

  6. 主类,单击文件夹图标。

  7. 选择主类对话框,按名称搜索选项卡上,选择一点,然后单击好吧

  8. 从库JAR文件中,选择通过清单复制到输出目录和链接

  9. 点击好吧关闭从模块创建JAR对话框。

  10. 点击好吧关闭项目结构对话框。

  11. 在菜单栏,点击构建>构建工件

  12. 在出现的上下文菜单中,选择项目名称:jar >构建。等待<代码类="docutils literal notranslate">sbt构建你的罐子。构建的结果中出现构建输出工具窗口(窗口视图>工具>构建)。

JAR是项目的建立<代码类="docutils literal notranslate">><代码类="docutils literal notranslate">工件><代码类="docutils literal notranslate"><项目名称> _jar文件夹中。JAR的名字<代码类="docutils literal notranslate"><项目名称> . jar

第七步:显示终端在IDE中

与你的<代码类="docutils literal notranslate">dbx现在项目结构,你可以创建<代码类="docutils literal notranslate">dbx项目。

通过点击显示IntelliJ IDEA的终端视图>工具窗口>终端的菜单栏,然后继续创建一个dbx项目

Eclipse

完成以下指令开始使用Eclipse和Java<代码类="docutils literal notranslate">dbx。这些指令创建一个最小Maven-based Java项目,您可以使用开始<代码类="docutils literal notranslate">dbx项目。

本地开发机器上,您必须安装以下除了将军需求:

  • Eclipse的一个版本。这些指令使用Eclipse IDE的Java开发人员版Eclipse IDE

  • 一个版的Java运行时环境(JRE)或Java开发工具包(JDK) 11日,根据您的本地机器上的操作系统。在任何版本的JRE或JDK 11应该工作,砖迄今为止只使用进行验证<代码类="docutils literal notranslate">dbx和Java开发人员的Eclipse IDE Eclipse 2022 - 03年R,其中包括AdoptOpenJDK 11。

遵循以下步骤开始设置<代码类="docutils literal notranslate">dbx项目结构:

步骤1:创建一个Maven-based Java项目

  1. 在Eclipse中,点击File > New >项目

  2. 新项目对话框中,展开Maven中,选择Maven项目,然后单击下一个

  3. 新的Maven项目对话框中,选择创建一个简单项目(跳过原型选择),然后单击下一个

  4. 组Id,输入一组ID,符合Java包名称的规则。这些步骤使用的包名称<代码类="docutils literal notranslate">com.example.demo。如果你进入一个不同的组ID,替代它在这些步骤。

  5. 工件IdJAR文件,输入一个名称,没有版本号。这些步骤使用的JAR名称<代码类="docutils literal notranslate">dbx-demo。如果你为JAR文件,输入一个不同的名称替代它在这些步骤。

  6. 点击完成

步骤2:将一个类添加到包中

您可以添加任何你想要的类包。这个包将包含一个类命名<代码类="docutils literal notranslate">一点

  1. Project Explorer视图(Window > Show View > Project Explorer),选择项目名称项目图标,然后单击File > New > Class

  2. 新的Java类对话框中,为,输入<代码类="docutils literal notranslate">com.example.demo

  3. 的名字,输入<代码类="docutils literal notranslate">一点

  4. 修饰符中,选择公共

  5. 离开超类空白。

  6. 哪个方法存根创建吗中,选择公共静态void Main (String [] args)

  7. 点击完成

步骤3:将依赖项添加到项目中

  1. Project Explorer视图中,双击项目名称> pom.xml

  2. 添加以下的子元素的依赖关系<代码类="docutils literal notranslate"><项目>元素,然后保存文件:

    < >的依赖关系<依赖>< groupId >org.apache.spark< / groupId >< artifactId >spark-sql_2.12< / artifactId ><版本>3.2.1之上> < /版本<范围>提供< / >范围< / >的依赖<依赖>< groupId >org.apache.spark< / groupId >< artifactId >spark-core_2.12< / artifactId ><版本>3.2.1之上> < /版本< / >的依赖<依赖>< groupId >org.apache.spark< / groupId >< artifactId >spark-hive_2.12< / artifactId ><版本>3.2.1之上> < /版本<范围>提供< / >范围< / >的依赖< / >的依赖关系

    替换:

    • 2.12与你的目标集群的Scala版本的。

    • 3.2.1之上与你的目标集群的版本的火花。

    看到的“系统环境”一节砖的运行时版本砖的运行时版本为目标集群。

第四步:编译项目

  1. 在项目的<代码类="docutils literal notranslate">pom.xml文件中,添加以下Maven编译器属性的子元素<代码类="docutils literal notranslate"><项目>元素,然后保存文件:

    <属性>< project.build.sourceEncoding >utf - 8< / project.build.sourceEncoding >< maven.compiler.source >1.6< / maven.compiler.source >< maven.compiler.target >1.6< / maven.compiler.target >< / >属性
  2. Project Explorer视图中,右键单击项目名称项目图标,然后单击Run As > Run配置

  3. 运行配置对话框中,单击Maven构建

  4. 单击新的启动配置图标。

  5. 为这个启动配置输入一个名称,例如干净的编译

  6. 基地目录,点击工作空间选择您的项目目录,然后单击好吧

  7. 目标,输入<代码类="docutils literal notranslate">清洁编译

  8. 点击运行。运行的输出出现在控制台视图(Window > Show View >控制台)。

第五步:将代码添加到项目中

你可以添加你想要的任何代码到您的项目。这个步骤假设您只需要将代码添加到文件命名<代码类="docutils literal notranslate">的那样为包命名<代码类="docutils literal notranslate">com.example.demo

在项目的<代码类="docutils literal notranslate">src / main / java><代码类="docutils literal notranslate">com.example.demo><代码类="docutils literal notranslate">的那样你想要的文件,添加代码<代码类="docutils literal notranslate">dbx批处理运行在你的目标集群。(如果你没有任何代码方便,您可以使用Java代码代码示例本文的末尾列出。)

第六步:运行项目

  1. Project Explorer视图中,右键单击项目名称项目图标,然后单击Run As > Run配置

  2. 运行配置对话框中,展开Java应用程序,然后单击应用程序

  3. 点击运行。运行的输出出现在控制台视图。

第七步:构建项目作为一个JAR

  1. Project Explorer视图中,右键单击项目名称项目图标,然后单击Run As > Run配置

  2. 运行配置对话框中,单击Maven构建

  3. 单击新的启动配置图标。

  4. 为这个启动配置输入一个名称,例如干净的包

  5. 基地目录,点击工作空间选择您的项目目录,然后单击好吧

  6. 目标,输入<代码类="docutils literal notranslate">清洁

  7. 点击运行。运行的输出出现在控制台视图。

JAR是建立<代码类="docutils literal notranslate"><项目名称>><代码类="docutils literal notranslate">目标文件夹中。JAR的名字<代码类="docutils literal notranslate"><项目名称> 0.0.1-snapshot.jar

请注意

如果不出现在JAR<代码类="docutils literal notranslate">目标文件夹中Project Explorer窗口,你可以尝试通过右击显示它项目名称项目图标,然后单击刷新

第八步:显示终端在IDE中

与你的<代码类="docutils literal notranslate">dbx现在项目结构,你可以创建<代码类="docutils literal notranslate">dbx项目。首先,设置Project Explorer视图显示隐藏文件(文件从一个点开始(<代码类="docutils literal notranslate">。/))<代码类="docutils literal notranslate">dbx生成,如下所示:

  1. Project Explorer视图中,单击省略号(视图菜单)过滤器图标,然后单击过滤器和定制

  2. 过滤器和定制对话框,预设的过滤器选项卡上,清晰的*资源。盒子。

  3. 点击好吧

接下来,Eclipse终端显示如下:

  1. 点击Window > Show View >终端在菜单栏上。

  2. 在终端的命令提示符没有出现,终端视图中,单击打开一个终端图标。

  3. 使用<代码类="docutils literal notranslate">cd命令来切换到您的项目的根目录。

  4. 继续创建一个dbx项目

仅没有IDE(终端)

完成以下指令开始使用一个终端和Python<代码类="docutils literal notranslate">dbx

遵循以下步骤,使用一个终端开始设置<代码类="docutils literal notranslate">dbx项目结构:

  1. 从您的终端,创建一个空白的文件夹中。这些指令使用文件夹命名<代码类="docutils literal notranslate">dbx-demo(但是你可以给你的<代码类="docutils literal notranslate">dbx项目的根文件夹中任何你想要的名字)。创建文件夹后,切换到它。

    对于Linux和macOS:

    mkdir dbx-democddbx-demo

    Windows:

    医学博士dbx-democddbx-demo
  2. 创建一个为这个项目通过运行Python的虚拟环境<代码类="docutils literal notranslate">pipenv命令,使用以下选项,从根的<代码类="docutils literal notranslate">dbx-demo文件夹,<代码类="docutils literal notranslate"><版本>是目标的Python版本已经安装在本地,例如<代码类="docutils literal notranslate">3.8.14

    pipenv——python <版本>
  3. 激活您的Python虚拟环境通过运行<代码类="docutils literal notranslate">pipenv壳牌

    pipenv壳
  4. 继续创建一个dbx项目

创建一个dbx项目

与你的<代码类="docutils literal notranslate">dbx项目结构从一个前面的,现在可以创建下列类型的项目之一:

创建一个最小的dbx Python项目

以下最小<代码类="docutils literal notranslate">dbx项目是最简单和最快的方式开始使用Python和<代码类="docutils literal notranslate">dbx。它演示了一个Python代码文件的批处理运行现有的砖通用的集群在你的砖工作区。

请注意

创建一个<代码类="docutils literal notranslate">dbx模板化项目演示了批处理运行的Python代码的通用集群和集群工作,远程代码工件部署,和CI / CD平台设置,跳到bob体育客户端下载创建一个dbx模板化项目与CI / CD支持Python

要完成这个过程,您必须有一个现有的通用集群在工作区中。(见显示集群orgydF4y2Ba创建一个集群)。理想情况下(但不是必需的),在您的Python版本的Python虚拟环境应与此集群上安装的版本。识别在集群上的Python版本,使用集群的网络终端运行命令<代码类="docutils literal notranslate">python——版本

python的版本
  1. 从您的终端,从你<代码类="docutils literal notranslate">dbx项目的根文件夹,运行<代码类="docutils literal notranslate">dbx配置命令使用以下选项。这个命令创建一个隐藏的<代码类="docutils literal notranslate">.dbx文件夹内<代码类="docutils literal notranslate">dbx项目的根文件夹。这<代码类="docutils literal notranslate">.dbx文件夹包含<代码类="docutils literal notranslate">lock.json和<代码类="docutils literal notranslate">project.json文件。

    dbx默认配置,配置文件默认环境

    请注意

    的<代码类="docutils literal notranslate">project.json文件定义一个环境命名<代码类="docutils literal notranslate">默认的的引用<代码类="docutils literal notranslate">默认的概要文件在你的<代码类="docutils literal notranslate">.databrickscfg文件。如果你想要<代码类="docutils literal notranslate">dbx使用不同的配置文件,替换<代码类="docutils literal notranslate">——简介默认的与<代码类="docutils literal notranslate">——简介其次是你目标概要文件的名字,<代码类="docutils literal notranslate">dbx配置命令。

    例如,如果你有一个概要文件命名<代码类="docutils literal notranslate">DEV在你的<代码类="docutils literal notranslate">.databrickscfg文件和你想要的<代码类="docutils literal notranslate">dbx使用它代替的<代码类="docutils literal notranslate">默认的配置文件,你<代码类="docutils literal notranslate">project.json文件可能看起来像这样相反,的情况下,你也会取代<代码类="docutils literal notranslate">——环境默认的与<代码类="docutils literal notranslate">——环境dev在<代码类="docutils literal notranslate">dbx配置命令:

    {“环境”:{“默认”:{“配置文件”:“默认”,“storage_type”:“mlflow”,“属性”:{“workspace_directory”:“/共享/ dbx /项目/ < current-folder-name >”,“artifact_location”:“dbfs: / dbx / < current-folder-name >”}},“开发”:{“配置文件”:“开发”,“storage_type”:“mlflow”,“属性”:{“workspace_directory”:“/共享/ dbx /项目/ < some-other-folder-name >”,“artifact_location”:“dbfs: / dbx / < some-other-folder-name >”}}}}

    如果你想要<代码类="docutils literal notranslate">dbx使用<代码类="docutils literal notranslate">DATABRICKS_HOST和<代码类="docutils literal notranslate">DATABRICKS_TOKEN环境变量而不是一个概要文件在你<代码类="docutils literal notranslate">.databrickscfg文件,然后离开了<代码类="docutils literal notranslate">——简介选择完全的<代码类="docutils literal notranslate">dbx配置命令。

  2. 创建一个文件夹命名<代码类="docutils literal notranslate">相依在你的<代码类="docutils literal notranslate">dbx项目的根文件夹。

    对于Linux和macOS:

    mkdir相依

    Windows:

    医学博士相依
  3. 添加一个文件命名<代码类="docutils literal notranslate">deployment.yaml文件到<代码类="docutils literal notranslate">相依目录,文件内容如下:

    构建:no_build:真正的环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”spark_python_task:python_file:“文件:/ / dbx-demo-job.py”

    请注意

    的<代码类="docutils literal notranslate">deployment.yaml文件包含小写字母的单词<代码类="docutils literal notranslate">默认的,这是一个大写的引用<代码类="docutils literal notranslate">默认的概要文件在你的<代码类="docutils literal notranslate">.databrickscfg文件。如果你想要<代码类="docutils literal notranslate">dbx使用不同的配置文件,替换<代码类="docutils literal notranslate">默认的与你的目标概要文件的名字。

    例如,如果你有一个概要文件命名<代码类="docutils literal notranslate">DEV在你的<代码类="docutils literal notranslate">.databrickscfg文件和你想要的<代码类="docutils literal notranslate">dbx使用它代替的<代码类="docutils literal notranslate">默认的配置文件,你<代码类="docutils literal notranslate">deployment.yaml文件可能看起来像这样:

    环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”spark_python_task:python_file:“文件:/ / dbx-demo-job.py”dev:工作流:- - - - - -的名字:“< some-other-job-name >”spark_python_task:python_file:“文件:/ / < some-other-filename > . py”

    如果你想要<代码类="docutils literal notranslate">dbx使用<代码类="docutils literal notranslate">DATABRICKS_HOST和<代码类="docutils literal notranslate">DATABRICKS_TOKEN环境变量而不是一个概要文件在你<代码类="docutils literal notranslate">.databrickscfg文件,然后离开<代码类="docutils literal notranslate">默认的在<代码类="docutils literal notranslate">deployment.yaml为是。<代码类="docutils literal notranslate">dbx默认情况下将使用这个引用。

    提示

    添加火花配置键-值对的工作,使用<代码类="docutils literal notranslate">spark_conf领域,例如:

    环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”spark_conf:spark.speculation:真正的spark.streaming.ui.retainedBatches:5spark.driver.extraJavaOptions:“- verbose: gc- xx: + PrintGCDetails”#……

    将权限添加到工作,使用<代码类="docutils literal notranslate">access_control_list领域,例如:

    环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”access_control_list:- - - - - -user_name:“someone@example.com”permission_level:“IS_OWNER”- - - - - -group_name:“团队”permission_level:“CAN_VIEW”#……

    请注意,<代码类="docutils literal notranslate">access_control_list字段必须详尽,因此工作的主人应该添加到列表中添加其他用户和组权限。

  4. 在集群上运行的代码添加到一个文件命名<代码类="docutils literal notranslate">dbx-demo-job.py并将文件添加到你的根文件夹<代码类="docutils literal notranslate">dbx项目。(如果你没有任何代码方便,您可以使用的Python代码代码示例本文的末尾列出。)

    请注意

    你不需要这个文件名称<代码类="docutils literal notranslate">dbx-demo-job.py。如果你选择一个不同的文件名,一定要更新<代码类="docutils literal notranslate">python_file字段<代码类="docutils literal notranslate">conf / deployment.yaml文件来匹配。

  5. 运行以下命令<代码类="docutils literal notranslate">dbx执行命令使用以下选项。在这个命令,取代<代码类="docutils literal notranslate">< existing-cluster-id >工作区中的目标集群的ID。(ID,见集群URL和ID)。

    dbx执行——cluster-id=< existing-cluster-id > dbx-demo-job——没有包
  6. 在本地查看运行结果,看看你的终端输出。查看您的集群上运行的结果,去标准输出窗格中司机日志选项卡为您的集群。(见集群的司机和工人日志)。

  7. 继续下一个步骤

创建一个最小的dbx Scala或Java项目

以下最小<代码类="docutils literal notranslate">dbx项目是最简单和最快的方式开始<代码类="docutils literal notranslate">dbx和Scala或Java。它展示了部署一个Scala或Java JAR砖工作区,然后运行部署JAR砖集群工作在你的砖工作区。

请注意

砖限制你如何可以在集群上运行Scala和Java代码:

  • 你不能运行一个Scala或Java文件尽可能工作在一个集群,一个Python文件。运行Scala或Java代码,您必须首先构建成一个罐子里。

  • 您可以运行一个罐子在现有的工作通用的集群。然而,您不能安装任何更新,罐子在同一集群通用。在这种情况下,您必须使用集群而不是工作。本节将使用集群工作的方法。

  • 你必须首先部署JAR砖工作区之前您可以运行在任何通用集群部署JAR或工作集中在工作区。

  1. 在你的终端,从项目的根文件夹,运行<代码类="docutils literal notranslate">dbx配置命令使用以下选项。这个命令创建一个隐藏的<代码类="docutils literal notranslate">.dbx文件夹在您的项目的根文件夹。这<代码类="docutils literal notranslate">.dbx文件夹包含<代码类="docutils literal notranslate">lock.json和<代码类="docutils literal notranslate">project.json文件。

    dbx默认配置,配置文件默认环境

    请注意

    的<代码类="docutils literal notranslate">project.json文件定义一个环境命名<代码类="docutils literal notranslate">默认的的引用<代码类="docutils literal notranslate">默认的概要文件在你的<代码类="docutils literal notranslate">.databrickscfg文件。如果你想要<代码类="docutils literal notranslate">dbx使用不同的配置文件,替换<代码类="docutils literal notranslate">——简介默认的与<代码类="docutils literal notranslate">——简介其次是你目标概要文件的名字,<代码类="docutils literal notranslate">dbx配置命令。

    例如,如果你有一个概要文件命名<代码类="docutils literal notranslate">DEV在你的<代码类="docutils literal notranslate">.databrickscfg文件和你想要的<代码类="docutils literal notranslate">dbx使用它代替的<代码类="docutils literal notranslate">默认的配置文件,你<代码类="docutils literal notranslate">project.json文件可能看起来像这样相反,的情况下,你也会取代<代码类="docutils literal notranslate">——环境默认的与<代码类="docutils literal notranslate">——环境dev在<代码类="docutils literal notranslate">dbx配置命令:

    {“环境”:{“默认”:{“配置文件”:“默认”,“storage_type”:“mlflow”,“属性”:{“workspace_directory”:“/共享/ dbx /项目/ < current-folder-name >”,“artifact_location”:“dbfs: / dbx / < current-folder-name >”}},“开发”:{“配置文件”:“开发”,“storage_type”:“mlflow”,“属性”:{“workspace_directory”:“/共享/ dbx /项目/ < some-other-folder-name >”,“artifact_location”:“dbfs: / dbx / < some-other-folder-name >”}}}}

    如果你想要<代码类="docutils literal notranslate">dbx使用<代码类="docutils literal notranslate">DATABRICKS_HOST和<代码类="docutils literal notranslate">DATABRICKS_TOKEN环境变量而不是一个概要文件在你<代码类="docutils literal notranslate">.databrickscfg文件,然后离开了<代码类="docutils literal notranslate">——简介选择完全的<代码类="docutils literal notranslate">dbx配置命令。

  2. 创建一个文件夹命名<代码类="docutils literal notranslate">相依在你的项目的根文件夹。

    对于Linux和macOS:

    mkdir相依

    Windows:

    医学博士相依
  3. 添加一个文件命名<代码类="docutils literal notranslate">deployment.yaml文件到<代码类="docutils literal notranslate">相依目录,用最小的文件内容如下:

    构建:no_build:真正的环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”new_cluster:spark_version:“10.4.x-scala2.12”node_type_id:“n1-highmem-4”num_workers:2instance_pool_id:“my-instance-pool”:- - - - - -jar:“文件:/ / /工件/ dbx_demo_jar / dbx-demo.jar”spark_jar_task:main_class_name:“com.example.demo.SampleApp”

    替换:

    • 的价值<代码类="docutils literal notranslate">spark_version用适当的运行时版本为你的目标集群的工作。

    • 的价值<代码类="docutils literal notranslate">node_type_id用适当的集群节点类型为你的目标集群的工作。

    • 的价值<代码类="docutils literal notranslate">instance_pool_id与现有实例的ID在您的工作空间,使更快的运行工作。如果你没有一个现有的实例池或者你不希望使用一个实例池,去除这条线。

    • 的价值<代码类="docutils literal notranslate">jar与工程JAR的路径。对于Scala的IntelliJ IDEA,它可能是<代码类="docutils literal notranslate">文件:/ / / / dbx_demo_jar / dbx-demo.jar工件。Eclipse IDE使用Java、<代码类="docutils literal notranslate">文件:/ /目标/ dbx-demo-0.0.1-SNAPSHOT.jar

    • 的价值<代码类="docutils literal notranslate">main_class_nameJAR的主类的名称,例如<代码类="docutils literal notranslate">com.example.demo.SampleApp

    请注意

    的<代码类="docutils literal notranslate">deployment.yaml文件包含这个词<代码类="docutils literal notranslate">默认的,这是一个参考<代码类="docutils literal notranslate">默认的环境<代码类="docutils literal notranslate">.dbx / project.json文件,进而是一个参考<代码类="docutils literal notranslate">默认的概要文件在你的<代码类="docutils literal notranslate">.databrickscfg文件。如果你想要<代码类="docutils literal notranslate">dbx使用不同的配置文件,替换<代码类="docutils literal notranslate">默认的在这个<代码类="docutils literal notranslate">deployment.yaml文件中相应的参考<代码类="docutils literal notranslate">.dbx / project.json文件,进而引用相应的配置文件内<代码类="docutils literal notranslate">.databrickscfg文件。

    例如,如果你有一个概要文件命名<代码类="docutils literal notranslate">DEV在你的<代码类="docutils literal notranslate">.databrickscfg文件和你想要的<代码类="docutils literal notranslate">dbx使用它代替的<代码类="docutils literal notranslate">默认的配置文件,你<代码类="docutils literal notranslate">deployment.yaml文件可能看起来像这样:

    环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”#……dev:工作流:- - - - - -的名字:“< some-other-job-name >”#……

    如果你想要<代码类="docutils literal notranslate">dbx使用<代码类="docutils literal notranslate">DATABRICKS_HOST和<代码类="docutils literal notranslate">DATABRICKS_TOKEN环境变量而不是一个概要文件在你<代码类="docutils literal notranslate">.databrickscfg文件,然后离开<代码类="docutils literal notranslate">默认的在<代码类="docutils literal notranslate">deployment.yaml为是。<代码类="docutils literal notranslate">dbx将使用<代码类="docutils literal notranslate">默认的(除了环境设置<代码类="docutils literal notranslate">配置文件值)<代码类="docutils literal notranslate">.dbx / project.json默认文件。

    提示

    添加火花配置键-值对的工作,使用<代码类="docutils literal notranslate">spark_conf领域,例如:

    环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”spark_conf:spark.speculation:真正的spark.streaming.ui.retainedBatches:5spark.driver.extraJavaOptions:“- verbose: gc- xx: + PrintGCDetails”#……

    将权限添加到工作,使用<代码类="docutils literal notranslate">access_control_list领域,例如:

    环境:默认的:工作流:- - - - - -的名字:“dbx-demo-job”access_control_list:- - - - - -user_name:“someone@example.com”permission_level:“IS_OWNER”- - - - - -group_name:“团队”permission_level:“CAN_VIEW”#……

    请注意,<代码类="docutils literal notranslate">access_control_list字段必须详尽,因此工作的主人应该添加到列表中添加其他用户和组权限。

  4. 运行<代码类="docutils literal notranslate">dbx部署命令。<代码类="docutils literal notranslate">dbx部署JAR中的位置<代码类="docutils literal notranslate">.dbx / project.json文件的<代码类="docutils literal notranslate">artifact_location路径匹配的环境。<代码类="docutils literal notranslate">dbx也部署项目的文件的一部分MLflow实验中列出的位置<代码类="docutils literal notranslate">.dbx / project.json文件的<代码类="docutils literal notranslate">workspace_directory路径匹配的环境。

    dbx部署——没有包
  5. 运行<代码类="docutils literal notranslate">dbx发射命令使用以下选项。运行这个命令的名称匹配的工作<代码类="docutils literal notranslate">conf / deployment.yaml。找到部署JAR运行作为这项工作的一部分,<代码类="docutils literal notranslate">dbx引用的位置<代码类="docutils literal notranslate">.dbx / project.json文件的<代码类="docutils literal notranslate">artifact_location路径匹配的环境。确定哪些特定的JAR来运行,<代码类="docutils literal notranslate">dbx引用MLflow实验中列出的位置<代码类="docutils literal notranslate">.dbx / project.json文件的<代码类="docutils literal notranslate">workspace_directory路径匹配的环境。

    dbx发射dbx-demo-job
  6. 查看工作工作集群上运行的结果,明白了视图的工作

  7. 查看引用的实验工作,明白了组织培训与MLflow运行实验

  8. 继续下一个步骤

创建一个dbx模板化项目与CI / CD支持Python

以下<代码类="docutils literal notranslate">dbx模板化Python项目演示支持批处理在砖上运行的Python代码通用的集群工作的集群砖工作区,远程代码工件部署和CI / CD平台设置。bob体育客户端下载(创建一个最小的<代码类="docutils literal notranslate">dbxPython项目,只有演示了一个Python代码文件的批处理运行在现有通用集群,跳过回创建一个最小的dbx Python项目)。

  1. 从您的终端,在你<代码类="docutils literal notranslate">dbx项目的根文件夹,运行<代码类="docutils literal notranslate">dbx初始化命令。

    dbx init
  2. project_name为项目输入一个名字,或按enter键接受默认项目名称。

  3. 版本,输入版本号为您的项目开始,或按enter键接受默认项目版本。

  4. ,选择对应的数字数据砖云版本,您希望您的项目使用,或按Enter键接受默认。

  5. cicd_tool,选择对应于所支持的CI / CD工具,您希望您的项目使用,或按Enter键接受默认。

  6. project_slug输入一个前缀,您想要使用的资源在你的项目中,或按enter键接受默认。

  7. workspace_directory工作区目录,输入当地的路径为您的项目,或按enter键接受默认。

  8. artifact_location,砖工作区中输入路径写入您的项目工件,或按enter键接受默认。

  9. 配置文件输入CLI身份验证配置文件的名称,你想让你的项目使用,或按enter键接受默认。

提示

您可以跳过前面的步骤通过运行<代码类="docutils literal notranslate">dbx初始化硬编码模板参数,例如:

dbx init -模板=“python_basic”\- p“project_name = cicd-sample-project”\- p“云=谷歌云”\- p“cicd_tool = GitLab”\- p“配置文件=违约”\——没有输入

dbx计算参数<代码类="docutils literal notranslate">project_slug,<代码类="docutils literal notranslate">workspace_directory,<代码类="docutils literal notranslate">artifact_location自动。这三个参数都是可选的,它们只对更高级的用例有用。

看到<代码类="docutils literal notranslate">初始化命令在CLI参考在<代码类="docutils literal notranslate">dbx文档。

另请参阅下一个步骤

代码示例

如果你没有现成的批处理运行任何代码<代码类="docutils literal notranslate">dbx,您可以通过实验<代码类="docutils literal notranslate">dbx批处理运行以下代码。这段代码创建了一个小桌子在你的工作区,查询的表,然后删除表。

提示

如果你想离开工作区中的表,而不是删除它,最后一行注释掉的代码在这个例子之前批处理运行它<代码类="docutils literal notranslate">dbx

#本地对象的测试和调试运行#“pip安装pyspark = X.Y.Z”,“X.Y.Z”# PySpark的版本相匹配#在你的目标集群。pyspark.sql进口SparkSessionpyspark.sql.types进口*datetime进口日期火花=SparkSession构建器浏览器名称(“dbx-demo”)getOrCreate()#创建一个DataFrame组成的高和低的温度#机场代码和日期。模式=StructType([StructField(“AirportCode”,StringType(),),StructField(“日期”,DateType(),),StructField(“TempHighF”,IntegerType(),),StructField(“TempLowF”,IntegerType(),)])数据=((“BLI”,日期(2021年,4,3),52,43),(“BLI”,日期(2021年,4,2),50,38),(“BLI”,日期(2021年,4,1),52,41),(“PDX”,日期(2021年,4,3),64年,45),(“PDX”,日期(2021年,4,2),61年,41),(“PDX”,日期(2021年,4,1),66年,39),(“海”,日期(2021年,4,3),57,43),(“海”,日期(2021年,4,2),54,39),(“海”,日期(2021年,4,1),56,41]]临时工=火花createDataFrame(数据,模式)#在集群上创建一个表,然后填满# DataFrame的表的内容。#从先前的运行,如果表已经存在#删除它。火花sql(使用默认的)火花sql(“删除表如果存在demo_temps_table”)临时工saveAsTable(“demo_temps_table”)#查询集群上的表,返回的行#在机场代码不是BLI和日期晚比2021-04-01 #。组织和秩序的结果高#温度按照降序排列。df_temps=火花sql(“从demo_temps_table SELECT *”\“AirportCode ! = BLI和日期>‘2021-04-01’”\“GROUP BY AirportCode,日期、TempHighF TempLowF”\“TempHighF DESC秩序”)df_temps显示()#结果:## + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +# | AirportCode | |日期TempHighF | TempLowF |# + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +45 # | PDX | 64 | 2021-04-03 | |# | PDX | 61 | 2021-04-02 | 41 |43 57 #海| | 2021-04-03 | | |54 #海| | 2021-04-02 | | |# + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +#清理删除表从集群。火花sql(“DROP TABLE demo_temps_table”)
com例子演示进口orgapache火花sqlSparkSession进口orgapache火花sql类型_进口orgapache火花sql进口javasql日期对象一点{def主要(arg游戏:数组(字符串]){瓦尔火花=SparkSession构建器()。(“本地”)。getOrCreate()瓦尔模式=StructType(数组(StructField(“AirportCode”,StringType,),StructField(“日期”,DateType,),StructField(“TempHighF”,IntegerType,),StructField(“TempLowF”,IntegerType,)))瓦尔数据=列表((“BLI”,日期返回对象的值(“2021-04-03”),52,43),(“BLI”,日期返回对象的值(“2021-04-02”),50,38),(“BLI”,日期返回对象的值(“2021-04-01”),52,41),(“PDX”,日期返回对象的值(“2021-04-03”),64年,45),(“PDX”,日期返回对象的值(“2021-04-02”),61年,41),(“PDX”,日期返回对象的值(“2021-04-01”),66年,39),(“海”,日期返回对象的值(“2021-04-03”),57,43),(“海”,日期返回对象的值(“2021-04-02”),54,39),(“海”,日期返回对象的值(“2021-04-01”),56,41))瓦尔抽样=火花sparkContextmakeRDD(数据)瓦尔临时工=火花createDataFrame(抽样,模式)/ /创建一个表的数据砖集群,然后填满/ /表DataFrame的内容。/ /从先前的运行,如果表已经存在/ /先删除它。火花sql(“使用默认”)火花sql(“如果存在demo_temps_table”删除表)临时工saveAsTable(“demo_temps_table”)/ /查询砖集群上的表,返回的行/ /在机场代码不是BLI和日期晚/ /比2021-04-01。组织和秩序的结果高/ /温度按照降序排列。瓦尔df_temps=火花sql(“从demo_temps_table SELECT *”+“AirportCode ! = BLI和日期>‘2021-04-01’”+“GROUP BY AirportCode,日期、TempHighF TempLowF”+“TempHighF DESC秩序”)df_temps显示()/ /结果:/ // / + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +/ / | AirportCode | |日期TempHighF | TempLowF |/ / + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +/ / | PDX | 64 | 2021-04-03 | |/ / | PDX | 61 | 2021-04-02 | 41 |/ /海洋57 43 | | | 2021-04-03 | |54海/ / | | 2021-04-02 | | |/ / + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +/ /清理被删除的表数据砖集群。火花sql(“DROP TABLE demo_temps_table”)}}
com.example.demo;进口java.util.ArrayList;进口并不知道;进口java.sql.Date;进口org.apache.spark.sql.SparkSession;进口org.apache.spark.sql.types。*;进口org.apache.spark.sql.Row;进口org.apache.spark.sql.RowFactory;进口org.apache.spark.sql.Dataset;公共一点{公共静态无效主要(字符串[]arg游戏){SparkSession火花=SparkSession构建器()浏览器名称(“临时工演示”)配置(“spark.master”,“本地”)getOrCreate();/ /创建一个火花DataFrame组成的高和低的温度/ /通过机场代码和日期。StructType模式=StructType(StructField[]{StructField(“AirportCode”,数据类型StringType,,元数据()),StructField(“日期”,数据类型DateType,,元数据()),StructField(“TempHighF”,数据类型IntegerType,,元数据()),StructField(“TempLowF”,数据类型IntegerType,,元数据()),});列表<>dataList=ArrayList<>();dataList添加(RowFactory创建(“BLI”,日期返回对象的值(“2021-04-03”),52,43));dataList添加(RowFactory创建(“BLI”,日期返回对象的值(“2021-04-02”),50,38));dataList添加(RowFactory创建(“BLI”,日期返回对象的值(“2021-04-01”),52,41));dataList添加(RowFactory创建(“PDX”,日期返回对象的值(“2021-04-03”),64年,45));dataList添加(RowFactory创建(“PDX”,日期返回对象的值(“2021-04-02”),61年,41));dataList添加(RowFactory创建(“PDX”,日期返回对象的值(“2021-04-01”),66年,39));dataList添加(RowFactory创建(“海”,日期返回对象的值(“2021-04-03”),57,43));dataList添加(RowFactory创建(“海”,日期返回对象的值(“2021-04-02”),54,39));dataList添加(RowFactory创建(“海”,日期返回对象的值(“2021-04-01”),56,41));数据集<>临时工=火花createDataFrame(dataList,模式);/ /创建一个表的数据砖集群,然后填满/ /表DataFrame的内容。/ /从先前的运行,如果表已经存在/ /先删除它。火花sql(“使用默认”);火花sql(“如果存在demo_temps_table”删除表);临时工()。saveAsTable(“demo_temps_table”);/ /查询砖集群上的表,返回的行/ /在机场代码不是BLI和日期晚/ /比2021-04-01。组织和秩序的结果高/ /温度按照降序排列。数据集<>df_temps=火花sql(“从demo_temps_table SELECT *”+“AirportCode ! = BLI和日期>‘2021-04-01’”+“GROUP BY AirportCode,日期、TempHighF TempLowF”+“TempHighF DESC秩序”);df_temps显示();/ /结果:/ // / + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +/ / | AirportCode | |日期TempHighF | TempLowF |/ / + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +/ / | PDX | 64 | 2021-04-03 | |/ / | PDX | 61 | 2021-04-02 | 41 |/ /海洋57 43 | | | 2021-04-03 | |54海/ / | | 2021-04-02 | | |/ / + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +/ /清理被删除的表数据砖集群。火花sql(“DROP TABLE demo_temps_table”);}}

下一个步骤

额外的资源