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

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

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

目录
相关文章
|
21天前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
53 1
Spark快速大数据分析PDF下载读书分享推荐
|
2月前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
1月前
|
存储 分布式计算 Hadoop
Spark和Hadoop都是大数据处理领域的重要工具
【6月更文挑战第17天】Spark和Hadoop都是大数据处理领域的重要工具
138 59
|
23天前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
63 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
26天前
|
分布式计算 资源调度 Hadoop
Java大数据处理:Spark与Hadoop整合
Java大数据处理:Spark与Hadoop整合
|
1月前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
63 6
|
1月前
|
分布式计算 Hadoop 大数据
大数据技术:Hadoop与Spark的对比
【6月更文挑战第15天】**Hadoop与Spark对比摘要** Hadoop是分布式系统基础架构,擅长处理大规模批处理任务,依赖HDFS和MapReduce,具有高可靠性和生态多样性。Spark是快速数据处理引擎,侧重内存计算,提供多语言接口,支持机器学习和流处理,处理速度远超Hadoop,适合实时分析和交互式查询。两者在资源占用和生态系统上有差异,适用于不同应用场景。选择时需依据具体需求。
|
1月前
|
分布式计算 Kubernetes Spark
大数据之spark on k8s
大数据之spark on k8s
|
1月前
|
机器学习/深度学习 数据采集 分布式计算
基于spark的大数据分析预测地震受灾情况的系统设计
基于spark的大数据分析预测地震受灾情况的系统设计