aaaaaa

然后,在SimpleApp.scala代码文件中输入以下代码:

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
 
object SimpleApp {
    def main(args: Array[String]) {
        val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system
        val conf = new SparkConf().setAppName("Simple Application")
        val sc = new SparkContext(conf)
        val logData = sc.textFile(logFile, 2).cache()
        val numAs = logData.filter(line => line.contains("a")).count()
        val numBs = logData.filter(line => line.contains("b")).count()
        println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
    }
}
这段代码的功能是,计算/usr/local/spark/README文件中包含"a"的行数和包含"b"的行数。不同于Spark Shell,独立应用程序需要通过val sc = new SparkContext(conf)初始化 SparkContext。

3.用sbt打包Scala应用程序

SimpleApp.scala程序依赖于Spark API,因此,需要通过sbt进行编译打包。 首先,需要使用vim编辑器在~/sparkapp目录下新建文件simple.sbt,命令如下:

$ cd ~
$ vim ./sparkapp/simple.sbt
simple.sbt文件用于声明该独立应用程序的信息以及与 Spark的依赖关系,需要在simple.sbt文件中输入以下内容:

name := "Simple Project"
version := "1.0"
scalaVersion := "2.10.5"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.2"
为了保证sbt能够正常运行,先执行如下命令检查整个应用程序的文件结构:

$ cd ~/sparkapp
$ find .
文件结构应该是类似如下所示的内容:

.
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
./simple.sbt
接下来,可以通过如下代码将整个应用程序打包成 JAR(首次运行时,sbt会自动下载相关的依赖包):

$ cd ~/sparkapp  #一定把这个目录设置为当前目录
$ /usr/local/sbt/sbt package
对于刚刚安装的Spark和sbt而言,第一次执行上面命令时,系统会自动从网络上下载各种相关的文件,因此上面执行过程需要消耗几分钟时间,后面如果再次执行sbt package命令,速度就会快很多,因为不再需要下载相关文件。

打包成功以后,生成的JAR包的位置为~/sparkapp/target/scala-2.10/simple-project_2.10-1.0.jar。

image-20210227164621036

4.通过spark-submit运行程序

最后,可以将生成的JAR包通过spark-submit提交到Spark中运行,命令如下:

$ /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.10/simple-project_2.10-1.0.jar
上面命令执行后会输出太多信息,可以不使用上面命令,而使用下面命令运行程序,这样就可以直接得到想要的结果:

$ /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.10/simple-project_2.10-1.0.jar 2>&1 | grep "Lines with a:"
最终得到的结果如下:

Lines with a: 62, Lines with b: 31
image-20210227164746869

4.1.2 用Java语言编写Spark独立应用程序
1. 安装Maven

Ubuntu中没有自带安装Maven,需要手动安装Maven。可以访问Maven官网下载安装文件,或者采用镜像地址(推荐首选第一梯队):

wget -c http://res.aihyzh.com/大数据技术原理与应用3/10/apache-maven-3.6.3-bin.zip #下载资源
下载apache-maven-3.6.3-bin.zip到Maven安装文件以后,保存到~/Downloads目录下。然后,可以选择安装在/usr/local/maven目录中,命令如下:

$ cd  ~/Downloads     # 进入下载目录
$ wget -c http://res.aihyzh.com/大数据技术原理与应用3/10/apache-maven-3.6.3-bin.zip #下载资源
$ sudo unzip ~/Downloads/apache-maven-3.6.3-bin.zip -d /usr/local
$ cd /usr/local
$ sudo mv apache-maven-3.6.3/ ./maven
$ sudo chown -R stu:stu ./maven
可选:

因默认Maven仓库下载过慢,国内可采用阿里镜像源,方式也很简单。

编辑/usr/local/maven/conf/settings.xml文件。在<mirrors></mirrors>标签中添加mirror 子节点:

<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
2.编写Java应用程序代码

在Linux终端中执行如下命令,在用户主文件夹下创建一个文件夹sparkapp2作为应用程序根目录:

$ cd ~ #进入用户主文件夹
$ mkdir -p ./sparkapp2/src/main/java
然后,使用vim编辑器在./sparkapp2/src/main/java目录下建立一个名为 SimpleApp.java的文件,命令如下:

$ vim ./sparkapp2/src/main/java/SimpleApp.java
在SimpleApp.java文件中输入如下代码:

/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.SparkConf;
 
public class SimpleApp {
    public static void main(String[] args) {
        String logFile = "file:///usr/local/spark/README.md"; // Should be some file on your system
        SparkConf conf=new SparkConf().setMaster("local").setAppName("SimpleApp");
        JavaSparkContext sc=new JavaSparkContext(conf);
        JavaRDD<String> logData = sc.textFile(logFile).cache(); 
        long numAs = logData.filter(new Function<String, Boolean>() {
            public Boolean call(String s) { return s.contains("a"); }
        }).count(); 
        long numBs = logData.filter(new Function<String, Boolean>() {
            public Boolean call(String s) { return s.contains("b"); }
        }).count(); 
        System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
    }
}
该程序依赖Spark Java API,因此,我们需要通过Maven进行编译打包。需要使用vim编辑器在~/sparkapp2目录中新建文件pom.xml,命令如下:

$ cd ~
$ vim ./sparkapp2/pom.xml
然后,在pom.xml文件中添加如下内容,用来声明该独立应用程序的信息以及与Spark的依赖关系:

<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.4.0</version>
        </dependency>
    </dependencies>
</project>
3.使用Maven打包Java程序

为了保证Maven能够正常运行,先执行如下命令检查整个应用程序的文件结构:

$ cd ~/sparkapp2
$ find .
文件结构应该是类似如下的内容:

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

$ cd ~/sparkapp2    #一定把这个目录设置为当前目录
$ /usr/local/maven/bin/mvn package
4.通过spark-submit 运行程序

最后,可以将生成的JAR包通过spark-submit提交到Spark中运行,命令如下:

$ /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar
上面命令执行后会输出太多信息,可以不使用上面命令,而使用下面命令运行程序,这样就可以直接得到想要的结果:

$ /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar 2>&1 | grep "Lines with a"
最终得到的结果如下:

Lines with a: 62, Lines with b: 31
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值