实战:DStream基础操作
-
了解DStream编程模型:DStream是Spark Streaming中对实时数据流的抽象,可以看作一系列持续的RDD。DStream可以通过外部数据源获取或通过现有DStream的高级操作获得。
-
操作本质:DStream上的操作最终会转化为对底层RDD的操作,例如使用flatMap()方法进行文本数据的扁平化和分割。
-
操作类型:包括转换操作(如map、flatMap、filter、reduce等),窗口操作(允许对滑动窗口内的数据进行计算),以及输出操作(将处理结果持久化,如保存到HDFS、数据库)。
使用DStream转换操作
-
知识储备:熟悉DStream转换操作的常用方法,如map、flatMap、filter等,以及transform操作,后者可以调用任意RDD上的方法。
-
实战练习
- 使用
transform()
方法拆分单词,并演示如何在控制台查看分词结果。
- 使用
使用DStream窗口操作
-
窗口函数:通过配置窗口长度和滑动间隔,对DStream上的数据执行计算操作。
-
窗口转换操作方法:包括window()函数和其他需要窗口长度和滑动间隔参数的操作。
-
实战练习
- 使用
window()
函数演示单词在滑动窗口中的聚合。 - 使用
reduceByKeyAndWindow()
函数统计当前窗口内不同单词出现的次数,并演示结果。
- 使用
使用DStream输出操作
-
输出操作概念:DStream的输出操作是触发所有转换操作的真正触发点,类似于RDD中的动作操作。
-
实战练习
- 演示如何将词频统计结果保存到HDFS文件。
- 演示如何将统计结果写入MySQL数据库,包括创建数据库和表、添加数据库驱动依赖、刷新项目依赖等步骤。
实战练习步骤
-
启动nc监听:在master主机上执行
nc -lk 9999
命令启动监听。 -
启动Spark Streaming应用程序:运行相应的Spark Streaming对象,如
TransformDemo
、WindowDemo
、ReduceByKeyAndWindowDemo
、SaveAsTextFilesDemo
、WriteDataToMySQL
等。 -
输入数据:在nc监听端口中输入数据,如多行文本或每秒一个字母。
-
查看结果
- 对于保存到HDFS的情况,使用
hdfs dfs -ls
命令查看生成的文件,并使用hdfs dfs -cat
命令查看文件内容。 - 对于写入MySQL数据库的情况,使用SQL查询
select * from searchKeyWord;
来查看表中的记录。
- 对于保存到HDFS的情况,使用
通过这些实战练习,您将能够深入理解Spark Streaming的DStream操作,包括数据流的转换、窗口操作、以及数据的输出和持久化。这些技能对于处理实时数据流和实现复杂的流处理逻辑至关重要。