Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

Spark 提供了丰富的API,让开发人员可以使用简洁的方式,来处理复杂的数据计算和分析。

在开始Spark应用开发之前,需要做好如下准备工作。

(1)搭建好Hadoop环境(如果需要访问HDFS);

(2)安装好Spark v2.4.3 最新版本;

一、首先通过IDEA创建一个Maven项目,并添加Spark 依赖jar包。

groupId: org.apache.spark

artifactId: spark-core_2.11

version: 2.4.3

Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

二、编写Spark 应用代码

示例代码很简单,就是读取本地文件 rickie.txt,然后查找并统计文本文件中有多少行包含有“rickie”字符串。

package com.rickie.spark;

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args )

{

System.out.println( "Hello World!" );

String logFile = "file:///root/rickie.txt";

JavaSparkContext sc = new JavaSparkContext("local", "Spark Tutorial",

"/usr/local/spark", new String[]{"tutorial-1.0.jar"});

JavaRDD<String> logData = sc.textFile(logFile).cache();

long num = logData.filter(line->line.contains("rickie")).count();

System.out.println("Lines contain rickie: " + num);

System.out.println("Well done!");

}

}

Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

Spark的运行模式取决于传递给SparkContext的Master URL的值。Master URL可以是以下任一种形式:

* local 使用一个Worker线程本地化运行SPARK(完全不并行);

* local[*] 使用逻辑CPU个数数量的线程来本地化运行Spark

* local[K] 使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)

* spark://HOST:PORT 连接到指定的Spark standalone master,默认端口是7077。

* yarn-client 以客户端模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。

* yarn-cluster 以集群模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。

* mesos://HOST:PORT 连接到指定的Mesos集群。默认接口是5050。

当然,为了使应用程序能够更灵活地在各种部署环境下使用,不建议把与运行环境相关的设置直接在代码中写死。

三、编译打包并复制到Spark环境中

将应用打包成JAR包,jar包名称为:tutorial-1.0.jar

Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

将上述jar 包复制到Spark 环境中。

四、通过 Spark-submit 运行应用

将生成的JAR 包通过 spark-submit 提交到Spark 中运行。

在开始运行之前,需要确保 /root/rickie.txt 文件存在。

Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

spark-submit 命令参数如下。

spark-submit

--class <main-class> //需要运行的程序的主类,应用程序的入口点

--master <master-url> //Master URL,可以在代码中指定,也可以通过参数传入

--deploy-mode <deploy-mode> //部署模式

... # other options //其他参数

<application-jar> //应用程序JAR包

[application-arguments] //传递给主类的主方法的参数

/usr/local/spark/bin/spark-submit --class "com.rickie.spark.App" tutorial-1.0.jar

Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

在命令执行完成后,会输出很多信息,其中可以找到Lines contain rickie 信息字样。

可以进一步修改/root/rickie.txt 文件,添加更多符合条件记录行,然后再次运行上述 spark-submit 命令,发现输出结果有变化。

/usr/local/spark/bin/spark-submit --class "com.rickie.spark.App" tutorial-1.0.jar

Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

如果输出信息太多,不方便查看,可以通过 grep 命令进行过滤。

/usr/local/spark/bin/spark-submit --class "com.rickie.spark.App" tutorial-1.0.jar 2>&1 | grep "Lines contain rickie:"

Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用

相关推荐