Spark Streaming使用(Python版)
本文使用的是PySpark,但如果用scala本质思想是一致的,只是语言不同。参考的是子雨老师的教程——子雨大数据之Spark入门教程(Python版)
Spark安装
PySpark版本参考
Spark2.1.0+入门:Spark的安装和使用(Python版)
scala版本参考
Spark Streaming简介
Spark Streaming是Spark的核心组件之一,为Spark提供了可拓展、高吞吐、容错的流计算能力。如下图所示,Spark Streaming可整合多种输入数据源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字。经处理后的数据可存储至文件系统、数据库,或显示在仪表盘里。
Spark Streaming的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似批处理的方式处理每个时间片数据,执行流程如下图所示。
Spark Streaming最主要的抽象是DStream(Discretized Stream,离散化数据流),表示连续不断的数据流。在内部实现上,Spark Streaming的输入数据按照时间片(如1秒)分成一段一段的DStream,每一段数据转换为Spark中的RDD,并且对DStream的操作都最终转变为对相应的RDD的操作。例如,下图展示了进行单词统计时,每个时间片的数据(存储句子的RDD)经flatMap操作,生成了存储单词的RDD。整个流式计算可根据业务的需求对这些中间的结果进一步处理,或者存储到外部设备中。
实现WordCount
编写程序
此处仅介绍文件流的输入来源,其它如套接字等可参见子雨老师的教程。
首先创建一个SparkContext,设置使用2个逻辑CPU的线程来本地化运行Spark。
from pyspark import SparkContext, SparkConf
from pyspark.streaming import StreamingContext
conf = SparkConf()
conf.setAppName('TestDStream')
conf.setMaster('local[2]')
sc = SparkContext(conf

本文介绍了如何使用PySpark实现SparkStreaming的WordCount,并通过updateStateByKey进行历史信息统计。首先讲解了SparkStreaming的安装、基本原理和DStream概念,接着通过代码展示WordCount的实现过程,最后探讨了如何利用updateStateByKey和checkpoint功能来处理流数据的历史统计问题。
最低0.47元/天 解锁文章
1051





