我是靠谱客的博主 沉默牛排,最近开发中收集的这篇文章主要介绍如何使用sbt或者maven编译打包运行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 安装编译打包工具

1).安装sbt

sbt是一款Spark用来对scala编写程序进行打包的工具,Spark 中没有自带 sbt,需要下载安装
在这里插入图片描述
下载sbt安装包以后,执行如下命令拷贝至 /usr/local/sbt 中:
在这里插入图片描述
接着在 /usr/local/sbt 中创建 sbt 脚本(vim ./sbt),添加如下内容:

// An highlighted block
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

保存后,为 ./sbt 脚本增加可执行权限:
在这里插入图片描述
最后运行如下命令,检验 sbt 是否可用(需要几分钟时间)(请确保电脑处于联网状态,首次运行会处于 “Getting org.scala-sbt sbt 0.13.11 …” 的下载状态,请耐心等待。笔者等待了 7 分钟才出现第一条下载提示):

在这里插入图片描述
只要能得到如下图的版本信息就没问题:
在这里插入图片描述

2). 安装Maven

下载到Maven安装文件以后,保存到“~/下载”目录下。然后,可以选择安装在“/usr/local/maven”目录中,命令如下:

// An highlighted block
$ sudo  unzip  ~/下载/apache-maven-3.3.9-bin.zip  -d  /usr/local
$ cd  /usr/local
$ sudo  mv  ./apache-maven-3.3.9  ./maven
$ sudo  chown  -R  hadoop  ./maven

在终端中执行如下命令创建一个文件夹 sparkapp 作为应用程序根目录:
在这里插入图片描述
在 ./sparkapp/src/main/scala 下建立一个名为 SimpleApp.scala 的文件,添加代码如下
在这里插入图片描述

2 编写Spark应用程序代码

该程序计算 /usr/local/spark/README 文件中包含 “a” 的行数 和包含 “b” 的行数。代码第8行的 /usr/local/spark 为 Spark 的安装目录,如果不是该目录请自行修改。

不同于 Spark shell交互式环境(P99),独立应用程序需要通过 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。

3 编译打包

-1. 使用sbt对Scala 程序进行编译打包

请在./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系:
name := “Simple Project”
version := “1.0”
scalaVersion := “2.11.8”
libraryDependencies += “org.apache.spark” %% “spark-core” % “2.1.0”
Spark和Scala的版本信息可以在启动信息中找到
在这里插入图片描述
为保证 sbt 能正常运行,先执行如下命令检查整个应用程序的文件结构:
在这里插入图片描述
文件结构应如下图所示:
在这里插入图片描述
接着,我们就可以通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):
在这里插入图片描述
在这里插入图片描述
对于刚安装好的Spark和sbt而言,第一次运行上面的打包命令时,会需要几分钟的运行时间,因为系统会自动从网络上下载各种文件。后面再次运行上面命令,就会很快,因为不再需要下载相关文件。打包成功的话,会输出类似如下信息:

// An highlighted block
hadoop@dblab:~/sparkapp$ /usr/local/sbt/sbt package
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0
[info] Set current project to Simple Project (in build file:/home/hadoop/sparkapp/)
[success] Total time: 2 s, completed 2017-2-19 15:45:29

生成的 jar 包的位置为 ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

-2. 使用Maven对Scala 程序进行编译打包

为了和sbt打包编译的内容进行区分,这里再为Maven创建一个代码目录“/sparkapp2”,并在“/sparkapp2/src/main/scala”下建立一个名为 SimpleApp.scala的Scala代码文件,放入和前面一样的代码
在“~/sparkapp2”目录中新建文件pom.xml

// An highlighted block
<project>
    <groupId>cn.edu.xmu</groupId>
    <artifactId>simple-project</artifactId>
    <modelVersion>4.0.0</modelVersion>
    <name>Simple Project</name>
    <packaging>jar</packaging>
    <version>1.0</version>
    <repositories>
        <repository>
            <id>jboss</id>
            <name>JBoss Repository</name>
            <url>http://repository.jboss.com/maven2/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>
  <build>
    <sourceDirectory>src/main/scala</sourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <scalaVersion>2.11.8</scalaVersion>
          <args>
            <arg>-target:jvm-1.5</arg>
          </args>
        </configuration>
	</plugin>
	</plugins>
</build>
</project> 

可以通过如下代码将整个应用程序打包成JAR包(注意:计算机需要保持连接网络的状态,而且首次运行打包命令时,Maven会自动下载依赖包,需要消耗几分钟的时间)

// An highlighted block
$ cd  ~/sparkapp2    #一定把这个目录设置为当前目录
$ /usr/local/maven/bin/mvn  package 

如果屏幕返回如下信息,则说明生成JAR包成功:

// An highlighted block
[INFO] Building jar: /home/hadoop/sparkapp2/target/simple-project-1.0.jar
[INFO]----------------------------------------
[INFO] BUILD SUCCESS
[INFO]----------------------------------------
[INFO] Total time: 4.665 s
[INFO] Finished at: 2017-01-31T 15:57:09+08:00
[INFO] Final Memory: 30M/72M
[INFO]---------------------------------------- 

生成的应用程序JAR包的位置为“/home/hadoop/sparkapp2/target/simple-project-1.0.jar”。

4 通过spark-submit运行程序

可以通过spark-submit提交应用程序,该命令的格式如下:

// An highlighted block
./bin/spark-submit 
  --class <main-class>  //需要运行的程序的主类,应用程序的入口点
  --master <master-url>  //Master URL,下面会有具体解释
  --deploy-mode <deploy-mode>   //部署模式
  ... # other options  //其他参数
  <application-jar>  //应用程序JAR包
  [application-arguments] //传递给主类的主方法的参数

对于之前使用sbt工具编译打包得到的 jar 包,就可以通过 spark-submit 提交到 Spark 中运行了,命令如下:

// An highlighted block
$ /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
#上面命令执行后会输出太多信息,可以不使用上面命令,而使用下面命令查看想要的结果
$ /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"

最终得到的结果如下:
Lines with a: 62, Lines with b: 30

对于之前使用Maven工具编译打包得到的 jar 包,也可以通过 spark-submit 提交到 Spark 中运行

最后

以上就是沉默牛排为你收集整理的如何使用sbt或者maven编译打包运行的全部内容,希望文章能够帮你解决如何使用sbt或者maven编译打包运行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部