第8章 Spark Streaming
概识Spark 流处理
Spark Streaming 是Spark的流处理,是大数据处理的半壁江山,另一与之相对的一半是批处理。Spark Streaming的数据处理的实时性远远高于批处理。
为了达到些许图文并茂的效果,笔者决定带领您来看图理解,以下是Spark Streaming数据处理流程的图解:
图x 数据处理流程示意图
以上数据处理流程示意图从一定角度说明了数据从哪里来,又将要到哪里去。中间经历了何种酸甜苦辣的悲欢离合,最后为人类世界能够带来自身的价值。图中有3部分,对应3个关键点,分别如下:
(1)起源:诸如Kafka,Flume,HDFS/S3,Kinesis,Twitter等
(2)酸甜苦辣,悲欢离合:具体的算子,比如map, reduce, join,窗口操作等
(3)魂归何处:文件系统, 数据库, 实时指标板
值得关注的是,在整个经历酸甜苦辣的过程中,Spark Streaming 可以遇见像机器学习(Mlib),图计算(GraphX)等技能大咖,为整个数据处理算法旅程增色添彩。
流处理的核心数据集的抽象是DStream(discretized stream),它是连续数据流的一种代表,DStream内部其实是一系列的RDD,也可以理解为一个时间段连续的RDD组成的集合。是对RDD更高一层次的封装。
毫无疑问,Spark Streaming的API同时提供了 Scala, Java 和 Python三种语言,其中的Python是在1.2版本中增加的,这其中需要注意的是有一部分的Python API 滞后于Scala和Java,即Java或者Scala的部分API在Python中是没有的。之后,笔者会做有必要的说明。
quick example
在接下来的示例代码中,数据源是TCP,因此您需要简单了解一下TCP,整个原理的核心是数据通过网络在某端口进行传输,而开启传输模式的命令在Windows系统和Linuxs系统不一样,分别在命令行输入的命名如下:
以下是示例代码:
(1)创建SparkStreamingContext
(2)获取数据源(TCP)
(3)将行分割成单词
(4)计数并查看结果
(5)调用计数
您也可以快速的验证该示例的效果,直接在Spark的根目录下面执行如下的命令便可以运行示例代码的程序,如下所示:
我们在程序中添加Spark Streaming的依赖的时候通常会使用Maven这个工具,而Spark Streaming这个模块有自己单独的依赖信息,如下所示:
而Spark Streaming对于读写Kafka,Flume,Kinesis三种来源数据,没有对应的API,而是单独提供了各种独立的Maven依赖,其依赖信息分别为
领取专属 10元无门槛券
私享最新 技术干货