使用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 —


相关文章
|
1月前
|
分布式计算 数据处理 Apache
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
162 1
|
1月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
40 0
|
1月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
82 0
|
8天前
|
分布式计算 流计算 Spark
【赵渝强老师】Spark Streaming中的DStream
本文介绍了Spark Streaming的核心概念DStream,即离散流。DStream通过时间间隔将连续的数据流转换为一系列不连续的RDD,再通过Transformation进行转换,实现流式数据的处理。文中以MyNetworkWordCount程序为例,展示了DStream生成RDD的过程,并附有视频讲解。
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
55 0
|
1月前
|
SQL 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
29 0
|
1月前
|
存储 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
43 0
|
1月前
|
SQL 分布式计算 大数据
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
30 0
|
17天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
52 2
ClickHouse与大数据生态集成:Spark & Flink 实战

热门文章

最新文章