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是:
創建一個遠程存儲庫Git提供者磚支持的,如果你沒有一個遠程回購已經可用。
克隆遠程回購到磚工作區中。
加強和模塊化筆記本代碼通過添加單獨的助手類和函數,配置文件,和測試中,切換到使用本地開發機器<代碼類="docutils literal notranslate">dbx你喜歡的IDE, Git安裝。
當地開發機器克隆你的遠程回購。
代碼從你的筆記本進入一個或多個本地代碼文件。
本地代碼時,將你的工作從你當地的回購遠程回購。同時,同步你的遠程回購磚工作區。
提示
或者,您可以使用dbx同步自動同步本地文件的更改與相應的文件在您的工作空間中,在真正的時間。
繼續使用筆記本在你為快速成型磚工作區,並繼續驗證代碼從你的筆記本到您的本地機器上。繼續使用您的本地IDE等任務的代碼模塊化,代碼完成、產品毛羽,代碼的單元測試,分步調試和對象,不需要現場連接數據磚。
使用<代碼類="docutils literal notranslate">dbx批處理運行您的本地代碼在你的目標集群,。(這類似於運行spark-submit腳本在火花的<代碼類="docutils literal notranslate">本目錄啟動火花集群上的應用程序)。
當你準備生產,使用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.0和2.1,這些api不能運行排成一列縱隊R代碼文件或編譯代碼包工作。
Visual Studio代碼
完成以下指令開始使用Visual Studio代碼與Python<代碼類="docutils literal notranslate">dbx。
本地開發機器上,您必須安裝以下除了將軍需求:
的Python擴展Visual Studio代碼。有關更多信息,請參見擴展市場在Visual Studio代碼的網站。
有關更多信息,請參見開始使用Python在VS代碼在Visual Studio代碼文檔。
遵循以下步驟開始設置<代碼類="docutils literal notranslate">dbx項目結構:
從您的終端,創建一個空白的文件夾中。這些指令使用文件夾命名<代碼類="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代碼。
Python在Visual Studio代碼中,創建一個虛擬環境為這個項目:
在菜單欄,點擊視圖>終端。
的根源<代碼類="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命令,如您需要在下一步。
選擇目標Python解釋器,然後激活Python虛擬環境:
在菜單欄,點擊視圖>命令麵板、類型<代碼類="docutils literal notranslate">Python:選擇,然後單擊Python:選擇翻譯。
在Python的路徑選擇Python解釋器您剛剛創建的虛擬環境。(這條路是上市的<代碼類="docutils literal notranslate">Virtualenv位置價值的輸出<代碼類="docutils literal notranslate">pipenv命令。)
在菜單欄,點擊視圖>命令麵板、類型<代碼類="docutils literal notranslate">終端:創建,然後單擊終端:創建新的終端。
有關更多信息,請參見使用Python環境VS代碼在Visual Studio代碼文檔。
繼續創建一個dbx項目。
PyCharm
完成以下指令開始使用PyCharm與Python<代碼類="docutils literal notranslate">dbx。
遵循以下步驟開始設置<代碼類="docutils literal notranslate">dbx項目結構:
在PyCharm,在菜單欄,點擊文件>新建項目。
在創建項目為您的新項目對話框中,選擇一個位置。
擴大Python解釋器:新的Pipenv環境。
選擇新環境使用如果尚未選中,然後選擇Pipenv從下拉列表中。
為基礎翻譯中,選擇包含Python解釋器的位置為目標的Python版本已經安裝在本地(理想情況下,一個版本相匹配你的目標集群的Python版本)。
為Pipenv可執行中,選擇包含您的本地安裝的位置<代碼類="docutils literal notranslate">pipenv,如果不是已經自動檢測。
如果你想創建一個最小的<代碼類="docutils literal notranslate">dbx項目,你想使用<代碼類="docutils literal notranslate">main.py文件與最小<代碼類="docutils literal notranslate">dbx項目,然後選擇創建一個主。py腳本歡迎盒子。否則,這個盒子。
點擊創建。
在項目工具窗口中,用鼠標右鍵單擊項目的根文件夾,然後單擊打開在>終端。
繼續創建一個dbx項目。
IntelliJ IDEA
完成以下指令開始使用IntelliJ IDEAScala和<代碼類="docutils literal notranslate">dbx。這些指令創建一個最小sbt-based Scala項目,您可以使用開始<代碼類="docutils literal notranslate">dbx項目。
本地開發機器上,您必須安裝以下除了將軍需求:
的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項目
在IntelliJ IDEA,取決於你的視圖,單擊項目>新項目orgydF4y2BaFile > New >項目。
在新項目對話框中,單擊Scala,點擊sbt,然後單擊下一個。
輸入項目名稱和項目的位置。
為JDK,選擇安裝的OpenJDK 8 JRE。
為sbt,選擇的最高可用版本<代碼類="docutils literal notranslate">sbt這是上市。
為Scala,在理想的情況下,選擇的Scala版本相匹配你的目標集群的Scala版本。看到的“係統環境”一節磚的運行時版本磚的運行時版本為目標集群。
旁邊Scala,選擇來源箱子如果尚未選中。
添加一個前綴包前綴。這些步驟使用包前綴<代碼類="docutils literal notranslate">com.example.demo。如果你指定一個不同的包前綴,取代包前綴在這些步驟。
點擊完成。
步驟2:將對象添加到包中
你可以添加任何所需的對象包中。這個包包含一個對象命名<代碼類="docutils literal notranslate">一點。
在項目工具窗口(項目視圖>工具窗口>),右鍵單擊項目名稱主要> src > > scala文件夾,然後單擊新的> Scala類。
選擇對象和類型對象的名稱,然後按下Enter。例如,類型<代碼類="docutils literal notranslate">一點。如果你進入一個不同的對象名稱在這裏,一定要更換名字在這些步驟。
替換的內容<代碼類="docutils literal notranslate">SampleApp.scala用下麵的代碼文件:
包com。例子。演示對象一點{def主要(arg遊戲:數組(字符串]){}}
步驟3:構建項目
將所需的項目構建設置和依賴項添加到您的項目。這個步驟假設您正在構建一個項目,成立於前麵的步驟,它隻取決於以下庫。
更換項目的內容<代碼類="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
與您的軟件包的名稱前綴。
在菜單欄,點擊窗口視圖>工具> sbt。
在sbt工具窗口中,右鍵單擊您的項目的名稱,然後單擊重載sbt項目。等到<代碼類="docutils literal notranslate">sbt完成從互聯網下載項目的依賴關係工件存儲如Coursier或常春藤在默認情況下,這取決於你的版本<代碼類="docutils literal notranslate">sbt。你可以看狀態欄的下載進度。如果您添加或更改任何更多的依賴這個項目,您必須為每組重複這個項目重新加載步驟的依賴關係添加或更改。
在菜單欄,點擊IntelliJ IDEA >首選項。
在首選項對話框中,單擊構建、執行部署> > sbt的構建工具。
在JVM,因為JRE,選擇安裝的OpenJDK 8 JRE。
在sbt項目中,選擇您的項目的名稱。
在sbt殼中,選擇構建。
點擊好吧。
在菜單欄,點擊構建>構建項目。構建的結果中出現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代碼示例的部分代碼示例。
第五步:運行項目
在菜單欄,點擊Run >編輯配置。
在運行/調試配置對話框中,單擊+(添加新配置)圖標,或添加新,或添加新的運行配置。
在下拉列表中,點擊sbt任務。
為的名字配置,輸入一個名稱,例如,運行這個程序。
為任務,輸入<代碼類="docutils literal notranslate">~運行。
選擇使用sbt殼。
點擊好吧。
在菜單欄,點擊>跑“運行程序”。出現在運行的結果sbt殼工具窗口。
第六步:構建項目作為一個JAR
您可以添加任何JAR構建設置您的項目,你想要的。這個步驟假設您隻希望構建一個JAR,基於項目成立於前麵的步驟。
在菜單欄,點擊文件>項目結構。
在項目結構對話框中,單擊項目設置>工件。
單擊+(添加)圖標。
在下拉列表中,選擇JAR >從模塊依賴關係。
在從模塊創建JAR對話框中,為模塊中,選擇您的項目的名稱。
為主類,單擊文件夾圖標。
在選擇主類對話框,按名稱搜索選項卡上,選擇一點,然後單擊好吧。
為從庫JAR文件中,選擇通過清單複製到輸出目錄和鏈接。
點擊好吧關閉從模塊創建JAR對話框。
點擊好吧關閉項目結構對話框。
在菜單欄,點擊構建>構建工件。
在出現的上下文菜單中,選擇項目名稱: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項目
在Eclipse中,點擊File > New >項目。
在新項目對話框中,展開Maven中,選擇Maven項目,然後單擊下一個。
在新的Maven項目對話框中,選擇創建一個簡單項目(跳過原型選擇),然後單擊下一個。
為組Id,輸入一組ID,符合Java包名稱的規則。這些步驟使用的包名稱<代碼類="docutils literal notranslate">com.example.demo。如果你進入一個不同的組ID,替代它在這些步驟。
為工件IdJAR文件,輸入一個名稱,沒有版本號。這些步驟使用的JAR名稱<代碼類="docutils literal notranslate">dbx-demo。如果你為JAR文件,輸入一個不同的名稱替代它在這些步驟。
點擊完成。
步驟2:將一個類添加到包中
您可以添加任何你想要的類包。這個包將包含一個類命名<代碼類="docutils literal notranslate">一點。
在Project Explorer視圖(Window > Show View > Project Explorer),選擇項目名稱項目圖標,然後單擊File > New > Class。
在新的Java類對話框中,為包,輸入<代碼類="docutils literal notranslate">com.example.demo。
為的名字,輸入<代碼類="docutils literal notranslate">一點。
為修飾符中,選擇公共。
離開超類空白。
為哪個方法存根創建嗎中,選擇公共靜態void Main (String [] args)。
點擊完成。
步驟3:將依賴項添加到項目中
在Project Explorer視圖中,雙擊項目名稱> pom.xml。
添加以下的子元素的依賴關係<代碼類="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之上
與你的目標集群的版本的火花。
看到的“係統環境”一節磚的運行時版本磚的運行時版本為目標集群。
第四步:編譯項目
在項目的<代碼類="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 >< / >屬性
在Project Explorer視圖中,右鍵單擊項目名稱項目圖標,然後單擊Run As > Run配置。
在運行配置對話框中,單擊Maven構建。
單擊新的啟動配置圖標。
為這個啟動配置輸入一個名稱,例如幹淨的編譯。
為基地目錄,點擊工作空間選擇您的項目目錄,然後單擊好吧。
為目標,輸入<代碼類="docutils literal notranslate">清潔編譯。
點擊運行。運行的輸出出現在控製台視圖(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代碼代碼示例本文的末尾列出。)
第六步:運行項目
在Project Explorer視圖中,右鍵單擊項目名稱項目圖標,然後單擊Run As > Run配置。
在運行配置對話框中,展開Java應用程序,然後單擊應用程序。
點擊運行。運行的輸出出現在控製台視圖。
第七步:構建項目作為一個JAR
在Project Explorer視圖中,右鍵單擊項目名稱項目圖標,然後單擊Run As > Run配置。
在運行配置對話框中,單擊Maven構建。
單擊新的啟動配置圖標。
為這個啟動配置輸入一個名稱,例如幹淨的包。
為基地目錄,點擊工作空間選擇您的項目目錄,然後單擊好吧。
為目標,輸入<代碼類="docutils literal notranslate">清潔包。
點擊運行。運行的輸出出現在控製台視圖。
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生成,如下所示:
在Project Explorer視圖中,單擊省略號(視圖菜單)過濾器圖標,然後單擊過濾器和定製。
在過濾器和定製對話框,預設的過濾器選項卡上,清晰的*資源。盒子。
點擊好吧。
接下來,Eclipse終端顯示如下:
點擊Window > Show View >終端在菜單欄上。
在終端的命令提示符沒有出現,終端視圖中,單擊打開一個終端圖標。
使用<代碼類="docutils literal notranslate">cd命令來切換到您的項目的根目錄。
繼續創建一個dbx項目。
僅沒有IDE(終端)
完成以下指令開始使用一個終端和Python<代碼類="docutils literal notranslate">dbx。
遵循以下步驟,使用一個終端開始設置<代碼類="docutils literal notranslate">dbx項目結構:
從您的終端,創建一個空白的文件夾中。這些指令使用文件夾命名<代碼類="docutils literal notranslate">dbx-demo(但是你可以給你的<代碼類="docutils literal notranslate">dbx項目的根文件夾中任何你想要的名字)。創建文件夾後,切換到它。
對於Linux和macOS:
mkdir dbx-democddbx-demo
Windows:
醫學博士dbx-democddbx-demo
創建一個為這個項目通過運行Python的虛擬環境<代碼類="docutils literal notranslate">pipenv命令,使用以下選項,從根的<代碼類="docutils literal notranslate">dbx-demo文件夾,<代碼類="docutils literal notranslate"><版本>是目標的Python版本已經安裝在本地,例如<代碼類="docutils literal notranslate">3.7.5。
pipenv——python <版本>
激活您的Python虛擬環境通過運行<代碼類="docutils literal notranslate">pipenv殼牌。
pipenv殼
繼續創建一個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的版本
從您的終端,從你<代碼類="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配置命令。
創建一個文件夾命名<代碼類="docutils literal notranslate">相依在你的<代碼類="docutils literal notranslate">dbx項目的根文件夾。
對於Linux和macOS:
mkdir相依
Windows:
醫學博士相依
添加一個文件命名<代碼類="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字段必須詳盡,因此工作的主人應該添加到列表中添加其他用戶和組權限。
在集群上運行的代碼添加到一個文件命名<代碼類="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文件來匹配。
運行以下命令<代碼類="docutils literal notranslate">dbx執行命令使用以下選項。在這個命令,取代<代碼類="docutils literal notranslate">< existing-cluster-id >工作區中的目標集群的ID。(ID,見集群URL和ID)。
dbx執行——cluster-id=< existing-cluster-id > dbx-demo-job——沒有包
在本地查看運行結果,看看你的終端輸出。查看您的集群上運行的結果,去標準輸出窗格中司機日誌選項卡為您的集群。(見集群的司機和工人日誌)。
繼續下一個步驟。
創建一個最小的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或工作集中在工作區。
在你的終端,從項目的根文件夾,運行<代碼類="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配置命令。
創建一個文件夾命名<代碼類="docutils literal notranslate">相依在你的項目的根文件夾。
對於Linux和macOS:
mkdir相依
Windows:
醫學博士相依
添加一個文件命名<代碼類="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字段必須詳盡,因此工作的主人應該添加到列表中添加其他用戶和組權限。
運行<代碼類="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部署——沒有包
運行<代碼類="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
查看工作工作集群上運行的結果,明白了視圖的工作。
查看引用的實驗工作,明白了實驗。
繼續下一個步驟。
創建一個dbx模板化項目與CI / CD支持Python
以下<代碼類="docutils literal notranslate">dbx模板化Python項目演示支持批處理在磚上運行的Python代碼通用的集群和工作的集群磚工作區,遠程代碼工件部署和CI / CD平台設置。Beplay体育安卓版本(創建一個最小的<代碼類="docutils literal notranslate">dbxPython項目,隻有演示了一個Python代碼文件的批處理運行在現有通用集群,跳過回創建一個最小的dbx Python項目)。
從您的終端,在你<代碼類="docutils literal notranslate">dbx項目的根文件夾,運行<代碼類="docutils literal notranslate">dbx初始化命令。
dbx init
為project_name為項目輸入一個名字,或按enter鍵接受默認項目名稱。
為版本,輸入版本號為您的項目開始,或按enter鍵接受默認項目版本。
為雲,選擇對應的數字數據磚雲版本,您希望您的項目使用,或按Enter鍵接受默認。
為cicd_tool,選擇對應於所支持的CI / CD工具,您希望您的項目使用,或按Enter鍵接受默認。
為project_slug輸入一個前綴,您想要使用的資源在你的項目中,或按enter鍵接受默認。
為workspace_directory工作區目錄,輸入當地的路徑為您的項目,或按enter鍵接受默認。
為artifact_location,磚工作區中輸入路徑寫入您的項目工件,或按enter鍵接受默認。
為配置文件的名稱,輸入數據磚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進口SparkSession從pyspark.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。例子。演示進口org。apache。火花。sql。SparkSession進口org。apache。火花。sql。類型。_進口org。apache。火花。sql。行進口java。sql。日期對象一點{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))瓦爾抽樣=火花。sparkContext。makeRDD(數據)瓦爾臨時工=火花。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”);}}
下一個步驟
擴展你的conf /部署。yaml文件支持各種類型的通用和集群的工作定義。
申報的多任務工作在你的<代碼類="docutils literal notranslate">conf / deployment.yaml文件。
參考命名屬性在你的<代碼類="docutils literal notranslate">conf / deployment.yaml文件。
批處理集群上運行代碼作為新的就業機會dbx執行命令。
額外的資源
批量部署代碼構件磚工作區存儲的dbx部署命令。
批處理運行在集群現有工作dbx發射命令。
了解更多關於dbx和CI / CD。
databrickslabs / dbx在GitHub庫