dbx的磚實驗室

請注意

本文將介紹<代碼類="docutils literal notranslate">dbx磚實驗室,是按原樣提供,不支持通過客戶技術支持渠道磚。問題和特性請求可以通過溝通問題頁麵的databrickslabs / dbx在GitHub回購。

dbx由磚實驗室是一個開放源碼工具旨在擴展磚命令行接口(磚CLI),並提供功能快速開發生命周期和持續集成和持續交付/部署(CI / CD)磚平台。Beplay体育安卓版本

dbx簡化了工作跨多個環境啟動和部署過程。它也有助於包您的項目並交付給你的磚環境版本化的方式。CLI-first方式而設計的,它是建立內部積極使用CI / CD作為當地的一部分管道和工具(如當地的ide,包括Visual Studio代碼和PyCharm)。

典型的開發流程<代碼類="docutils literal notranslate">dbx是:

  1. 創建一個遠程存儲庫Git提供者磚支持的,如果你沒有一個遠程回購已經可用。

  2. 克隆遠程回購到磚工作區中。

  3. 創建或移動一個磚筆記本你的磚worksapce克隆的回購。用這個筆記本開始原型代碼,你希望你的磚集群來運行。

  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平台等Beplay体育安卓版本GitHub的行為,Azure DevOps,或GitLab自動化運行遠程回購的代碼在您的集群。

需求

使用<代碼類="docutils literal notranslate">dbx,你必須安裝以下本地開發機器上,不管你的代碼使用Python, Scala,或Java:

  • Python版本3.6或更高版本。

    如果你的代碼使用Python,你應該使用一個匹配的版本的Python安裝在你的目標集群。Python的版本,安裝在現有的集群中,您可以使用集群網絡終端運行<代碼類="docutils literal notranslate">python——版本命令。看到的“係統環境”一節磚的運行時版本磚的運行時版本為目標集群。

  • 皮普

  • 如果你的代碼使用Python, Python方法來創建虛擬環境,確保您使用正確的版本的Python和在你的包的依賴關係<代碼類="docutils literal notranslate">dbx項目。本文將介紹pipenv

  • dbx0.7.0或以上版本。你可以安裝這個包從Python包指數(PyPI)通過運行<代碼類="docutils literal notranslate">皮普安裝dbx

    確認<代碼類="docutils literal notranslate">dbx安裝,運行以下命令:

    dbx——版本

    如果版本號返回,<代碼類="docutils literal notranslate">dbx安裝。

    如果版本號低於0.7.0,升級<代碼類="docutils literal notranslate">dbx通過運行下麵的命令,然後再次檢查版本號:

    pip安裝dbx——dbx升級版本#還是……python - m pip安裝dbx——dbx升級版本
  • 磚CLI,設置身份驗證。磚CLI安裝時自動安裝<代碼類="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.7.5

      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.7.5

    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平台設置,跳到Beplay体育安卓版本創建一個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">默認的在你的磚CLI的概要文件<代碼類="docutils literal notranslate">.databrickscfg文件。如果你想要<代碼類="docutils literal notranslate">dbx使用不同的配置文件,替換<代碼類="docutils literal notranslate">——簡介默認的與<代碼類="docutils literal notranslate">——簡介其次是你目標概要文件的名字,<代碼類="docutils literal notranslate">dbx配置命令。

    例如,如果你有一個概要文件命名<代碼類="docutils literal notranslate">DEV在你的磚CLI<代碼類="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環境變量,而不是在你的磚CLI<代碼類="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">默認的在你的磚CLI的概要文件<代碼類="docutils literal notranslate">.databrickscfg文件。如果你想要<代碼類="docutils literal notranslate">dbx使用不同的配置文件,替換<代碼類="docutils literal notranslate">默認的與你的目標概要文件的名字。

    例如,如果你有一個概要文件命名<代碼類="docutils literal notranslate">DEV在你的磚CLI<代碼類="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環境變量,而不是在你的磚CLI<代碼類="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">權限領域,例如:

    環境:默認的:工作流:- - - - - -的名字:“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">默認的在你的磚CLI的概要文件<代碼類="docutils literal notranslate">.databrickscfg文件。如果你想要<代碼類="docutils literal notranslate">dbx使用不同的配置文件,替換<代碼類="docutils literal notranslate">——簡介默認的與<代碼類="docutils literal notranslate">——簡介其次是你目標概要文件的名字,<代碼類="docutils literal notranslate">dbx配置命令。

    例如,如果你有一個概要文件命名<代碼類="docutils literal notranslate">DEV在你的磚CLI<代碼類="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環境變量,而不是在你的磚CLI<代碼類="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:“i3.xlarge”aws_attributes:first_on_demand:1可用性:“現貨”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">默認的在你的磚CLI的概要文件<代碼類="docutils literal notranslate">.databrickscfg文件。如果你想要<代碼類="docutils literal notranslate">dbx使用不同的配置文件,替換<代碼類="docutils literal notranslate">默認的在這個<代碼類="docutils literal notranslate">deployment.yaml文件中相應的參考<代碼類="docutils literal notranslate">.dbx / project.json文件,進而引用相應的配置文件在你的磚CLI<代碼類="docutils literal notranslate">.databrickscfg文件。

    例如,如果你有一個概要文件命名<代碼類="docutils literal notranslate">DEV在你的磚CLI<代碼類="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環境變量,而不是在你的磚CLI<代碼類="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">權限領域,例如:

    環境:默認的:工作流:- - - - - -的名字:“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. 查看引用的實驗工作,明白了實驗

  8. 繼續下一個步驟

創建一個dbx模板化項目與CI / CD支持Python

以下<代碼類="docutils literal notranslate">dbx模板化Python項目演示支持批處理在磚上運行的Python代碼通用的集群工作的集群磚工作區,遠程代碼工件部署和CI / CD平台設置。Beplay体育安卓版本(創建一個最小的<代碼類="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“雲= AWS”\- p“cicd_tool = GitHub行動”\- 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”);}}

下一個步驟

額外的資源