spark (java API) 在Intellij IDEA中开发并运行

  1. 云栖社区>
  2. 博客>
  3. 正文

spark (java API) 在Intellij IDEA中开发并运行

王小雷 2017-02-07 20:50:00 浏览3285
展开阅读全文

概述:Spark 程序开发,调试和运行,intellij idea开发Spark java程序。
分两部分,第一部分基于intellij idea开发Spark实例程序并在intellij IDEA中运行Spark程序.第二部分,将开发程序提交到Spark local或者hadoop YARN集群运行。Github项目源码

图1,直接在intellij IDEA(社区版)中开发调试,直接run。

spark hadoop intellij idea java 程序开发

图2,直接在intellij IDEA(社区版)中用hadoop YARN模式。

这里写图片描述

Github项目源码

1.(第一部分)使用intellij IDEA创建一个Java的Maven项目。Github项目源码

初始化的MAVEN项目如下

这里写图片描述

2.根据Spark官网实例做二次开发Github项目源码

2.1.创建SimpleApp.java文件 SimpleApp.java

/**
 * MIT.
 * Author: wangxiaolei(王小雷).
 * Date:17-2-7.
 * Project:SparkJavaIdea.
 */
import org.apache.spark.api.java.*;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.function.Function;

public class SimpleApp {
    public static void main(String[] args) {
        String logFile = "file:///opt/spark-2.1.0-bin-hadoop2.7/README.md"; // Should be some file on your system
        SparkConf conf = new SparkConf().setAppName("Simple Application");
        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);

        sc.stop();
    }
}

2.2.修改pom.xml文件 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>wangxiaolei</groupId>
    <artifactId>SparkJavaIdea</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>

</project>

3.在intellij IDEA中运行Spark程序

3.1 设置IDEA运行项的Configuration中的VM opthion 增加-Dspark.master=local

这里写图片描述

3.2.右键SimpleApp.java 点击运行,稍等片刻看到运行成功。

已经将Readme.md中的单词a和b统计出来了Lines with a: 62, lines with b: 30

这里写图片描述

至此,Spark在intellij IDEA中开发,并在IDEA中运行成功!

4.(第二部分)将intellij IDEA中的Spark java程序打包成jarGithub项目源码

这里写图片描述

5.spark local模式运行

5.1.使用intellij IDEA的Terminal或者是系统(博主是Ubuntu)的Terminal,在当前项目路径(/home/xiaolei/Data/GS/Spark/SparkJavaIdea)执行如下代码。

/opt/spark-2.1.0-bin-hadoop2.7/bin/spark-submit \
  --class "SimpleApp" \
  --master local[4] \
  target/SparkJavaIdea-1.0-SNAPSHOT.jar

这里写图片描述

这里写图片描述

至此,Spark local模式程序开发和运行成功!

6.YARN集群模式(或伪分布式)运行.——需要有集群环境或者提前配置好了伪分布式环境,伪分布式环境搭建参考另一篇博文Ubuntu16.04安装Hadoop2.6+Spark1.6+开发实例

6.1.开启hadoop集群,开启Spark。

# 初次搭建集群需要格式化namenode(已经初始化过可省略)
/opt/hadoop-2.7.3/bin/hdfs namenode -format
#开启hadoop集群(伪分布式)
/opt/hadoop-2.7.3/sbin/start-all.sh
#开启Spark
/opt/spark-2.1.0-bin-hadoop2.7/sbin/start-all.sh
#查看开启状态
jps

这里写图片描述

6.2 使用intellij IDEA的Terminal或者是系统(博主是Ubuntu)的Terminal,在当前项目路径(/home/xiaolei/Data/GS/Spark/SparkJavaIdea)执行如下代码。

/opt/spark-2.1.0-bin-hadoop2.7/bin/spark-submit   --class SimpleApp   --master yarn --deploy-mode cluster   target/SparkJavaIdea-1.0-SNAPSHOT.jar

这里写图片描述

至此,Spark在intellij IDEA中开发,并在hadoop YARN模式下运行成功!

6.3.在Web中查看Github项目源码

http://localhost:8088/cluster/apps

这里写图片描述

至此,Spark在intellij IDEA中开发,并在hadoop YARN模式下运行成功!

网友评论

登录后评论
0/500
评论
王小雷
+ 关注