用一罐磚的工作
Java存檔或JAR文件格式是基於流行的ZIP文件格式和用於聚合許多Java或Scala文件成一個。使用JAR任務,您可以確保快速、可靠的安裝Java或Scala代碼在你磚的工作。本文提供了一個示例創建一個JAR和工作運行應用程序打包在JAR。在本例中,您將:
創建JAR項目定義一個示例應用程序。
包塞在一個瓶子的示例文件。
創建一個工作運行JAR。
運行工作,查看結果。
步驟2:創建JAR
完成以下指令使用Java或Scala創建JAR。
創建一個Java JAR
從
databricks_jar_test
文件夾中,創建一個文件命名PrintArgs.java
用下麵的內容:進口java.util.Arrays;公共類PrintArgs{公共靜態無效主要(字符串[]arg遊戲){係統。出。println(數組。toString(arg遊戲));}}
編譯
PrintArgs.java
文件,該文件創建該文件PrintArgs.class
:javac PrintArgs.java
(可選)運行編譯後的程序:
java PrintArgs Hello World !#【你好,世界!】
在相同的文件夾中
PrintArgs.java
和PrintArgs.class
文件,創建一個文件夾命名meta - inf
。在
meta - inf
文件夾中,創建一個文件命名manifest . mf
用下麵的內容。一定要添加一個換行符結束時,這個文件:主類:PrintArgs
的根源
databricks_jar_test
文件夾中,創建一個JAR命名PrintArgs.jar
:jar cvfm PrintArgs。jar meta - inf / MANIFEST。曼氏金融* . class
(可選)的根源
databricks_jar_test
文件夾,運行JAR:java jar PrintArgs。jar Hello World !#【你好,世界!】
請注意
如果你得到這個錯誤
沒有主要清單屬性,在PrintArgs.jar
,一定要添加一個換行符結束manifest . mf
文件,然後再次嚐試創建和運行JAR。
創建一個Scala JAR
從
databricks_jar_test
文件夾中,創建一個空文件命名build.sbt
用下麵的內容:ThisBuild / scalaVersion: = " 2.12.14 " ThisBuild /組織:= " com。例子" lazy val PrintArgs = (project in file(".")) .settings( name := "PrintArgs" )
從
databricks_jar_test
文件夾,創建文件夾結構src / main / scala的例子
。在
例子
文件夾中,創建一個文件命名PrintArgs.scala
用下麵的內容:包例子對象PrintArgs{def主要(arg遊戲:數組(字符串):單位={println(arg遊戲。mkString(”、“))}}
編譯的程序:
sbt編譯
(可選)運行編譯後的程序:
sbt“運行Hello World \ !”#你好,世界!
在
databricks_jar_test /項目
文件夾中,創建一個文件命名assembly.sbt
用下麵的內容:addSbtPlugin (“com。eed3si9n“%”sbt-assembly“%”2.0.0”)
的根源
databricks_jar_test /項目
文件夾中,創建一個JAR命名PrintArgs-assembly-0.1.0-SNAPSHOT.jar
在目標/ scala - 2.12
文件夾:sbt組裝
(可選)的根源
databricks_jar_test
文件夾,運行JAR:目標/ scala - 2.12 / PrintArgs-assembly-0.1.0-SNAPSHOT java jar。jar Hello World !#你好,世界!
步驟3。創建一個磚工作運行JAR
去你的磚的著陸頁,做以下之一:
在側邊欄中,單擊工作流並點擊。
在側邊欄中,單擊新並選擇工作從菜單中。
在任務出現在對話框任務選項卡中,取代添加一個名稱為你的工作…對你的工作名稱,例如
JAR例子
。為任務名稱任務,輸入一個名稱,例如
java_jar_task
對於Java或scala_jar_task
Scala。為類型中,選擇JAR。
為主類對於這個示例,輸入
PrintArgs
對於Java或example.PrintArgs
Scala。為依賴庫,點擊+添加。
在添加依賴庫對話框,上傳和JAR選中時,拖動JAR(在這個例子中,
PrintArgs.jar
對於Java或PrintArgs-assembly-0.1.0-SNAPSHOT.jar
Scala)對話框的刪除JAR這裏區域。點擊添加。
為參數對於這個示例,輸入
["你好",“世界!”
。點擊添加。
輸出大小限製Jar的工作
工作產出,比如日誌輸出發送到stdout, 20 mb的大小限製。如果總輸出有一個更大的規模,是取消,標記為失敗。
為了避免遇到這個限製,可以防止stdout從司機磚通過設置回來spark.databricks.driver.disableScalaOutput
火花配置真正的
。默認情況下,標誌值假
。國旗控製單元輸出Scala JAR和Scala筆記本工作。如果啟用了國旗,引發不工作執行結果返回給客戶機。國旗並不影響數據集群中所寫的日誌文件。磚建議設置這個標誌隻對工作集群JAR的工作因為它禁用筆記本的結果。
建議:使用終於嚐試
塊清理工作
考慮一個JAR,由兩部分組成:
jobBody ()
它包含的主要工作的一部分。jobCleanup ()
後要執行jobBody ()
,是否該函數成功返回一個例外。
例如,jobBody ()
創建表和jobCleanup ()
那些表。
安全確保清理方法被調用的方法是放一個終於嚐試
在代碼塊:
試一試{jobBody()}最後{jobCleanup()}
你不應該試著清理使用sys.addShutdownHook (jobCleanup)
或者下麵的代碼:
瓦爾cleanupThread=新線程{覆蓋def運行=jobCleanup()}運行時。getRuntime。addShutdownHook(cleanupThread)
因為火花容器管理的生命周期數據磚,關閉鉤子不可靠地運行。
配置罐工作參數
你通過參數JAR就業一個JSON字符串數組。看到spark_jar_task
對象傳遞給請求主體創建一個新工作操作(帖子/ /創建工作
API)的工作。要訪問這些參數,檢查字符串
數組傳遞給你主要
函數。
管理庫依賴關係
火花驅動程序有一定的庫依賴關係,不能覆蓋。如果你的工作增加了衝突的庫,火花驅動程序庫依賴關係優先考慮。
讓司機庫依賴關係的完整列表,在筆記本上運行以下命令一個集群配置相同的火花版本(或集群與司機你想檢查):
% sh ls /磚/ jar
當你定義為jar庫依賴關係,磚建議清單火花和Hadoop提供
依賴關係。在Maven中,添加火花和Hadoop提供依賴項:
<依賴>< groupId >org.apache.spark< / groupId >< artifactId >spark-core_2.11< / artifactId ><版本>tripwire> < /版本<範圍>提供< / >範圍< / >的依賴<依賴>< groupId >org.apache.hadoop< / groupId >< artifactId >hadoop核心< / artifactId ><版本>1.2.1 "> < /版本<範圍>提供< / >範圍< / >的依賴
在sbt
,添加火花和Hadoop提供依賴項:
libraryDependencies+ =“org.apache.spark”% %“spark-core”%“tripwire”%“提供”libraryDependencies+ =“org.apache.hadoop”% %“hadoop核心”%“1.2.1”%“提供”
提示
指定正確的Scala版本對你依賴基於運行的版本。
下一個步驟
想要了解更多關於創建和運行數據磚工作,明白了創建和運行數據磚的工作。