返回顶部
首页 > 资讯 > 精选 >SparkShell和IDEA中如何编写Spark程序
  • 271
分享到

SparkShell和IDEA中如何编写Spark程序

2023-06-02 14:06:27 271人浏览 八月长安
摘要

这篇文章主要讲解了“sparkshell和idea中如何编写Spark程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SparkShell和IDEA中如何编写Spark程序”吧!spark

这篇文章主要讲解了“sparkshellidea中如何编写Spark程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SparkShell和IDEA中如何编写Spark程序”吧!

spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用Scala编写Spark程序。spark-shell程序一般用作Spark程序测试练习来用。spark-shell属于Spark的特殊应用程序,我们可以在这个特殊的应用程序中提交应用程序

spark-shell启动有两种模式,local模式和cluster模式,分别为

local模式:

spark-shell

local模式仅在本机启动一个SparkSubmit进程,没有与集群建立联系,虽然进程中有SparkSubmit但是不会被提交到集群红

SparkShell和IDEA中如何编写Spark程序

Cluster模式(集群模式):

spark-shell \
--master spark://hadoop01:7077 \
--executor-memory 512m \
--total-executor-cores 1

后两个命令不是必须的 --master这条命令是必须的(除非在jar包中已经指可以不指定,不然就必须指定)

退出shell

千万不要ctrl+c spark-shell 正确退出 :quit 千万不要ctrl+c退出 这样是错误的 若使用了ctrl+c退出 使用命令查看监听端口 netstat - apn | grep 4040 在使用kill -9 端口号 杀死即可

3.25.11 spark2.2shell和spark1.6shell对比

SparkShell和IDEA中如何编写Spark程序

ps:启动spark-shell若是集群模式,在WEBUI会有一个一直执行的任务

通过IDEA创建Spark工程

ps:工程创建之前步骤省略,在scala中已经讲解,直接默认是创建好工程的

对工程中的pom.xml文件配置

 <!-- 声明公有的属性 -->
<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <encoding>UTF-8</encoding>
        <scala.version>2.11.8</scala.version>
        <spark.version>2.2.0</spark.version>
        <hadoop.version>2.7.1</hadoop.version>
        <scala.compat.version>2.11</scala.compat.version>
    </properties>
<!-- 声明并引入公有的依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
        </dependency>
        <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>${spark.version}</version>
    </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
    </dependencies> 

Spark实现WordCount程序

Scala版本
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object SparkWordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("dri/wordcount").setMaster("local[*]")
    //创建sparkContext对象
    val sc =  new SparkContext(conf)
    //通过sparkcontext对象就可以处理数据
    //读取文件 参数是一个String类型的字符串 传入的是路径
    val lines: RDD[String] = sc.textFile(“dir/wordcount”)
    //切分数据
    val words: RDD[String] = lines.flatMap(_.split(" "))
    //将每一个单词生成元组 (单词,1)
    val tuples: RDD[(String, Int)] = words.map((_,1))
    //spark中提供一个算子 reduceByKey 相同key 为一组进行求和 计算value
    val sumed: RDD[(String, Int)] = tuples.reduceByKey(_+_)
    //对当前这个结果进行排序 sortBy 和scala中sotrBy是不一样的 多了一个参数
    //默认是升序  false就是降序
    val sorted: RDD[(String, Int)] = sumed.sortBy(_._2,false)
    //将数据提交到集群存储 无法返回值
     sorted.foreach(println)
    //回收资源停止sc,结束任务
    sc.stop()
  }
}

Java版本

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List; 
public class JavaWordCount {
    public static void main(String[] args) {
//1.先创建conf对象进行配置主要是设置名称,为了设置运行模式
        SparkConf conf = new SparkConf().setAppName("JavaWordCount").setMaster("local");
//2.创建context对象
        JavaSparkContext jsc = new JavaSparkContext(conf);
        JavaRDD<String> lines = jsc.textFile("dir/file");
//进行切分数据 flatMapFunction是具体实现类
        JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
            @Override
            public Iterator<String> call(String s) throws Exception {
                List<String> splited = Arrays.asList(s.split(" "));
                return splited.iterator();
            }

        });
//将数据生成元组
//第一个泛型是输入的数据类型 后两个参数是输出参数元组的数据
        JavaPairRDD<String, Integer> tuples = words.mapToPair(new PairFunction<String, String,
                Integer>() {
            @Override
            public Tuple2<String, Integer> call(String s) throws Exception {
                return new Tuple2<String, Integer>(s, 1);
            }
        });
//聚合
        JavaPairRDD<String, Integer> sumed = tuples.reduceByKey(new Function2<Integer, Integer,
                Integer>() {
            @Override
//第一个Integer是相同key对应的value
//第二个Integer是相同key 对应的value
            public Integer call(Integer v1, Integer v2) throws Exception {
                return v1 + v2;
            }
        });
//因为Java api没有提供sortBy算子,此时需要将元组中的数据进行位置调换,然后在排序,排完序在换回
//第一次交换是为了排序
        JavaPairRDD<Integer, String> swaped = sumed.mapToPair(new PairFunction<Tuple2<String,
                Integer>, Integer, String>() {
            @Override
            public Tuple2<Integer, String> call(Tuple2<String, Integer> tup) throws Exception {
                return tup.swap();
            }
        });
//排序
        JavaPairRDD<Integer, String> sorted = swaped.sortByKey(false);
//第二次交换是为了最终结果 <单词,数量>
        JavaPairRDD<String, Integer> res = sorted.mapToPair(new PairFunction<Tuple2<Integer,
                String>, String, Integer>() {
            @Override
            public Tuple2<String, Integer> call(Tuple2<Integer, String> tuple2) throws Exception
            {
                return tuple2.swap();
            }
        });
        System.out.println(res.collect());
        res.saveAsTextFile("out1");
        jsc.stop();
    }
}

感谢各位的阅读,以上就是“SparkShell和IDEA中如何编写Spark程序”的内容了,经过本文的学习后,相信大家对SparkShell和IDEA中如何编写Spark程序这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: SparkShell和IDEA中如何编写Spark程序

本文链接: https://lsjlt.com/news/230398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SparkShell和IDEA中如何编写Spark程序
    这篇文章主要讲解了“SparkShell和IDEA中如何编写Spark程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SparkShell和IDEA中如何编写Spark程序”吧!spark...
    99+
    2023-06-02
  • idea编写java程序
    学习之前首先要了解什么是idea,它是java编程语言开发的集成环境,在业界被公认为最好的java开发工具。用idea编写java程序是非常方便的,如何使用idea编写开发java程序,是菜鸟学习java的入门之路,下面是创建java项目的...
    99+
    2023-10-21
    java intellij-idea 开发语言
  • java程序如何编写和运行
    要编写和运行Java程序,需要按照以下步骤进行操作:1. 安装Java开发工具包(JDK):首先需要从Oracle官方网站下载并安装...
    99+
    2023-08-28
    java
  • 如何使用IDEA开发Spark SQL程序(一文搞懂)
    目录前言Spark SQL是什么1、使用IDEA开发Spark SQL 1.1、指定列名添加Schema1.2、通过StructType指定Schema1.3、反射推断Sc...
    99+
    2024-04-02
  • 如何编写 Python 程序
    如何编写 Python 程序 从今以后,保存和运行 Python 程序的标准步骤如下: 对于 PyCharm 用户 打开 PyCharm。 以给定的文件名创建新文件。 输入案例中给出的代码。 右键并运行当前文件。 注意:每当你需要提供...
    99+
    2023-01-31
    程序 Python
  • pycharm如何编写程序
    在 pycharm 中编写 python 程序只需以下步骤:1. 创建新项目;2. 创建 python 文件;3. 编写 python 代码;4. 运行程序。 PyCharm 中编写程...
    99+
    2024-04-19
    python git pycharm
  • idea编写java程序的方法是什么
    编写Java程序的方法是以下几个步骤:1. 确定程序需求和目标:确定程序要实现的功能和目标。2. 设计程序结构:根据需求和目标,设计...
    99+
    2023-08-11
    idea java
  • 如何在Python中编写并发程序
    GIL 在Python中,由于历史原因(GIL),使得Python中多线程的效果非常不理想.GIL使得任何时刻Python只能利用一个CPU核,并且它的调度算法简单粗暴:多线程中,让每个线程运行一段时间t...
    99+
    2022-06-04
    程序 如何在 Python
  • 如何理解程序编写中的锁
    这篇文章主要讲解了“如何理解程序编写中的锁”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解程序编写中的锁”吧! 锁到底是一种怎样的存在?随着业务的发展与用户量的增加,高并发问...
    99+
    2023-06-15
  • 如何在 ASP 和 JavaScript 中编写分布式应用程序?
    随着互联网的不断发展,越来越多的应用程序需要支持分布式架构,以满足高并发和高可用性的需求。本文将介绍如何在 ASP 和 JavaScript 中编写分布式应用程序,帮助开发人员更好地应对分布式架构的挑战。 一、ASP 中的分布式应用程序 ...
    99+
    2023-06-25
    javascript 学习笔记 分布式
  • spark如何提交python程序
    要提交Spark Python程序,可以使用spark-submit命令来执行Python脚本。下面是一个示例: spark-sub...
    99+
    2024-04-03
    spark python
  • VB.NET如何编写托盘程序
    小编给大家分享一下VB.NET如何编写托盘程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!托盘程序是指这样一类程序:当程序运行后,会在系统的托盘区(也有说是状态...
    99+
    2023-06-17
  • 如何编写YARN应用程序
    本篇内容介绍了“如何编写YARN应用程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 概要Drill是Apache旗下的一个开源SQL...
    99+
    2023-06-02
  • 如何在Bash中编写响应式程序?
    Bash是一种流行的Shell脚本语言,广泛应用于Linux和Unix系统中。虽然Bash主要用于编写脚本,但是也可以用它来编写响应式程序。在本文中,我们将介绍如何在Bash中编写响应式程序,并提供一些示例代码。 什么是响应式编程? 响...
    99+
    2023-08-08
    编程算法 bash 响应
  • 如何用VB.NET编写托盘程序
    这篇文章主要介绍如何用VB.NET编写托盘程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文程序的设计及运行环境(1)Windows 2000 Service(2)Net Framework SDK 正式版VB....
    99+
    2023-06-17
  • VB.NET如何编写DEC加密程序
    这篇文章主要为大家展示了“VB.NET如何编写DEC加密程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET如何编写DEC加密程序”这篇文章吧。在VB.NET编写DEC加密程序是很容易...
    99+
    2023-06-17
  • C#Windows服务程序如何编写
    小编给大家分享一下C#Windows服务程序如何编写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C#Windows服务程序编写是一种比较高级的编程技术,内部使用...
    99+
    2023-06-17
  • 如何使用scala编写wordcount程序
    本篇内容介绍了“如何使用scala编写wordcount程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!直接上程序吧一、公共类<pr...
    99+
    2023-06-03
  • java小应用程序如何编写
    编写Java小应用程序一般需要遵循以下几个步骤:1. 确定应用程序的目标和功能:首先确定应用程序的目标和功能,明确应用程序要解决的问...
    99+
    2023-08-24
    java
  • 如何在Linux系统中高效地编写Java程序和算法?
    在Linux系统中编写Java程序和算法是程序员日常工作中的一部分。高效编写Java程序和算法是程序员们必须掌握的技能之一。本文将介绍如何在Linux系统中高效地编写Java程序和算法。 一、选择好Java开发工具 在Linux系统中,我们...
    99+
    2023-08-10
    文件 linux 编程算法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作