使用IntelliJ Idea开发Spark Streaming流应用程序

简介: 使用IntelliJ Idea开发Spark Streaming流应用程序

未经许可,禁止以任何形式转载,若要引用,请标注链接地址

全文共计2178字,阅读大概需要3分钟

一、实验目的

掌握IntelliJ Idea创建Spark Streaming流应用程序的过程。

 熟悉在spark上提交运行Spark Streaming作业的方式。


二、实验内容

1、使用IntelliJ Idea创建Spark Streaming流应用程序。

 2、打包Spark Streaming流应用程序并提交执行。


三、实验原理

Spark Streaming内部的基本工作原理如下:接收实时输入数据流,然后将数据拆分成多个batch,比如每收集1秒的数据封装为一个batch,然后将每个batch交给Spark的计算引擎进行处理,最后会生产出一个结果数据流,其中的数据,也是由一个一个的batch所组成的

bfd6a75a00ef4ef38094a70fcf1e72e3.png


四、实验环境

硬件:x86_64 ubuntu 16.04服务器

 软件:JDK1.8,Scala-2.11.8,Spark-2.3.2,Hadoop-2.7.3,IntelliJ Idea


五、实验步骤

5.1 启动IntelliJ Idea并创建spark项目

1、启动IntelliJ Idea。在终端窗口下,执行以下命令:

1.  $ cd /opt/idea-IC-191.7479.19/bin
2.  $ ./idea.sh

2、在idea中创建scala项目,并命名为”sparkstreaming”,其它都默认即可,然后点击”Finish”按钮。如下图所示:


b1272d4ce0844672a55144d9543adcd3.png

3、点击【File】菜单,选择【Project structure】选项,进入项目结构界面。如下图所示:

7e300a10338541b49ba0954e1e57366b.png


4、按图中所示依次选择,导入spark的jar包到项目中。如下图所示:


7dd698998ad742748b195fbe0c0371f6.png

5、jar包所在目录为”/opt/spark/jars/“,之后一直点击【OK】按钮即可导包成功。如下图所示:

0cebf7a59d3e4892a6bcf4e45a623b7b.png


6、查看成功导入的部分jar包。如下图所示:


5.2 编写spark代码

1、选中spark_project1项目的src目录右键依次选择【New】-【Scala Class】,创建WordCount类。如下图所示:

beb752d5b5cf430ba51771f7b34fa126.png


2、与上述方法一样,在弹出的对话框中命名为”WordCount”,并选择”Object”类型。如下图所示:

91e2e0e5048945a8b04a85589bdd29a6.png


图片10

 3、编写流程序代码,读取指定端口中的数据,对来自端口的数据进行单词统计。代码如下所示:


1.  import org.apache.spark.SparkConf
2.  import org.apache.spark.streaming.Seconds
3.  import org.apache.spark.streaming.StreamingContext
4.       
5.  object WordCount {
6.       
7.    def main(args: Array[String]): Unit = {
8.      val conf = new SparkConf()
9.          .setMaster("local[*]")
10.         .setAppName("WordCount")
11.      
12.     val ssc = new StreamingContext(conf, Seconds(20))
13.      
14.     val lines = ssc.socketTextStream("localhost", 9999)
15.     val words = lines.flatMap { _.split(" ") }   
16.     val pairs = words.map { word => (word, 1) }  
17.     val wordCounts = pairs.reduceByKey(_ + _)  
18.      
19.     wordCounts.print()  
20.      
21.     ssc.start()
22.     ssc.awaitTermination()
23.   }
24.      
25. }

5.3 打包程序

1、点击【File】菜单,选择【Project structure】选项,进入项目结构界面。如下图所示:

a26ed3bb16864bd7a7f080f2b6e6c4d4.png


2、按图中选择依次点击进行打包。如下图所示:

771fae7babc449209f87566e3763d803.png


3、弹出对话框,Main Class框中选择 WordCount,其它保持默认即可,点击【OK】。如下图所示:

20e77a0b69614763afab54868c0c473e.png


4、返回到项目结构界面,把项目依赖的所有jar包都删除,只导出类文件,点击【OK】按钮。如下图所示:

442953958d34440c8a9ae4d7a9b6fa02.png


5、点击【Build】菜单下的Build Artifacts选项进行编译。如下图所示:


bf43a8d6325d4fea95f7521ad184c031.png

6、按图中所示选择即开始编译。如下图所示:

65665aa7d3c5405d8401638995199422.png


5.4 集群运行jar包

1、启动Spark集群。在终端窗口下,执行以下命令:

1.  $ cd /opt/spark
2.  $ ./sbin/start-all.sh

2、启动nc服务器。在终端窗口下,执行以下命令:

1.  $ nc -lp 9999

3、另打开一个终端窗口,执行如下命令,提交jar包到spark中运行程序:

1.  $ spark-submit --class WordCount /root/IdeaProjects/sparkstreaming/out/artifacts/sparkstreaming_jar/sparkstreaming.jar

执行过程如下图所示:

b3e2ac37afba4882a2283ceef1d2b6d1.png


4、切换到nc服务器所在终端窗口,输入以下内容:

1.  hello sparkstreaming
2.  hello scala

5、切换到Spark流程序提交窗口。在终端中可以看出单词统计的输出结果。如下图所示:

c22a4bf4f4ad41fe8e68cf5c31f71a31.png


— END —


相关文章
|
3月前
|
JavaScript 前端开发 Java
Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案
本文解决了Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use的问题,并通过介绍端口的使用原理和操作系统的端口管理机制,可以更有效地解决端口冲突问题,并确保Web服务器能够顺利启动和运行。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
129 0
|
8月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
165 0
|
6月前
|
IDE 开发工具
【开发IDE升级】如何对IDEA版本进行升级
本文介绍了如何将 IntelliJ IDEA Ultimate 从 2020.2.2 版本升级到 2022.3.2 版本。主要内容包括准备工作、卸载旧版本和安装新版本的步骤。首先,从官网下载所需版本并备份旧版配置;接着,通过 Uninstall.exe 卸载旧版,保留配置和插件;最后,安装新版并完成激活。详细的操作步骤和截图帮助用户顺利完成升级过程。
8278 1
【开发IDE升级】如何对IDEA版本进行升级
|
5月前
|
开发工具 开发者 git
IntelliJ IDEA 插件推荐:提升开发效率的神器
本文介绍了 IntelliJ IDEA 的多个实用插件,涵盖从提高开发效率到美化界面的各个方面。
434 1
|
6月前
|
前端开发 Java 开发者
这款免费 IDEA 插件让你开发 Spring 程序更简单
Feign-Helper 是一款支持 Spring 框架的 IDEA 免费插件,提供 URL 快速搜索、Spring Web Controller 路径一键复制及 Feign 与 Controller 接口互相导航等功能,极大提升了开发效率。
|
7月前
|
分布式计算 流计算 Spark
【赵渝强老师】Spark Streaming中的DStream
本文介绍了Spark Streaming的核心概念DStream,即离散流。DStream通过时间间隔将连续的数据流转换为一系列不连续的RDD,再通过Transformation进行转换,实现流式数据的处理。文中以MyNetworkWordCount程序为例,展示了DStream生成RDD的过程,并附有视频讲解。
163 0
|
8月前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
119 0
|
8月前
|
SQL 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
122 0
|
8月前
|
存储 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
118 0