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


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

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

    图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模式下运行成功!

  • 相关阅读:
    [转]正则基础之 环视 Lookaround
    php简单的抓取
    [转]中国人和德国人的区别
    常用特殊符号HTML代码(转)
    Container(容器)
    在安装cute editor下, 用asp.net传送大文件
    php生成的html meta和link标记在body标签里 浏览器顶部有个空行
    gridview 列表时常用的 js
    WebBrowser 跨域之间访问的方法
    发送短信程序
  • 原文地址:https://www.cnblogs.com/cnndevelop/p/14242264.html
Copyright © 2020-2023  润新知