用一罐砖的工作
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版本对你依赖基于运行的版本。
下一个步骤
想要了BOB低频彩解更多关于创建和运行数据砖工作,明白了创建和运行数据砖的工作。