用实例讲解Spark Sreaming

转载 2016年05月31日 09:12:03

用实例讲解Spark Sreaming

spark

作者: 侠天

本篇文章用Spark Streaming +Hbase为列,Spark Streaming专为流式数据处理,对Spark核心API进行了相应的扩展。什么是Spark Streaming?首先,什么是流式处理呢?数据流是一个数据持续不断到达的无边界序列集。流式处理是把连续不断的数据输入分割成单元数据块来处理。流式处理是一个低延迟的处理和流式数据分析。Spark Streaming对Spark核心API进行了相应的扩展,支持高吞吐、低延迟、可扩展的流式数据处理。实时数据处理应用的场景有下面几个:

  • 网站监控和网络监控;
  • 异常监测;
  • 网页点击;
  • 广告数据;

物联网(IOT)

sreaming

Spark Streaming

支持的数据源包括HDFS文件,TCP socket,Kafka,Flume,Twitter等,数据流可以通过Spark核心API、DataFrame SQL或者机器学习API处理,并可以持久化到本地文件、HDFS、数据库或者其它任意支持Hadoop输出格式的形式。Spark Streaming如何工作?Spark Streaming以X秒(batch size)为时间间隔把数据流分割成Dstream,组成一个RDD序列。你的Spark应用处理RDD,并把处理的结果批量返回。

RDD

Spark Streaming例子的架构图

例子
Spark Streaming例子代码分下面几部分:

  • - 读取流式数据;
  • - 处理流式数据;
  • - 写处理结果倒Hbase表。

Spark处理部分的代码涉及到如下内容:

  • 读取Hbase表的数据;
  • 按天计算数据统计;
  • 写统计结果到Hbase表,列簇:stats。

数据集数据集来自油泵信号数据,以CSV格式存储在指定目录下。Spark Streaming监控此目录,CSV文件的格式如上图。

CSV
采用Scala的case class来定义数据表结构,parseSensor函数解析逗号分隔的数据。

Hbase表结构

流式处理的Hbase表结构如下:

  • 油泵名字 + 日期 + 时间戳 组合成row key;
  • 列簇是由输入数据列、报警数据列等组成,并设置过期时间。
  • 每天等统计数据表结构如下:
  • 油泵名和日期组成row key;

列簇为stats,包含列有最大值、最小值和平均值;

平均值
配置写入Hbase表

Spark直接用TableOutputFormat类写数据到Hbase里,跟在MapReduce中写数据到Hbase表一样,下面就直接用TableOutputFormat类了。Spark Streaming代码

Spark Streaming的基本步骤:

  • 初始化Spark StreamingContext对象;
  • 在DStream上进行transformation操作和输出操作;
  • 开始接收数据并用streamingContext.start();
  • 等待处理停止,streamingContext.awaitTermination()。

初始化Spark StreamingContext

对象创建 StreamingContext对象,StreamingContext是Spark Streaming处理的入口,这里设置2秒的时间间隔。代码

接下来用StreamingContext的textFileStream(directory)创建输入流跟踪Hadoop文件系统的新文件,并处理此目录下的所有文件,这里directory指文件目录。目录

linesDStream是数据流,每条记录是按行记录的text格式。

数据流
图6对DStream进行transformation操作和输出操作接下来进行解析,对linesDStream进行map操作,map操作是对RDD应用Sensor.parseSensor函数,返回Sensor的RDD。解析

对DStream的每个RDD执行foreachRDD 方法,使用filter过滤Sensor中低psi值来创建报警,使用Hbase的Put对象转换sensor和alter数据以便能写入到Hbase。然后使用PairRDDFunctions的saveAsHadoopDataset方法将最终结果写入到任何Hadoop兼容到存储系统。存储系统

sensorRDD经过Put对象转换,然后写入到Hbase。

对象转换
开始接收数据通过streamingContext.start()显式的启动数据接收,然后调用streamingContext.awaitTermination()来等待计算完成。计算

Spark读写Hbase

现在开始读取Hbase的sensor表,计算每条的统计指标并把对应的数据写入stats列簇。

stats
下面的代码读取Hbase的sensor表psi列数据,用StatCounter计算统计数据,然后写入stats列簇。统计数据

下面的流程图显示newAPIHadoopRDD输出,(row key,result)的键值对。PairRDDFunctions 的saveAsHadoopDataset方法把Put对象存入到Hbase。

流程图
运行Spark Streaming应用运行Spark Streaming应用跟运行Spark应用类似,比较简单,此处不赘述,参见Spark Streaming官方文档。

via:infoQ

Spark-Streaming的window滑动窗口及热点搜索词统计案例

Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作为window...
  • ZMC921
  • ZMC921
  • 2017年07月14日 10:51
  • 340

第5课:基于案例一节课贯通Spark Streaming流计算框架的运行源码

SparkStreaming,贯通Spark Streaming流计算框架,源码
  • chinsun_1
  • chinsun_1
  • 2016年05月08日 14:17
  • 1523

Spark SQL网站搜索综合案例实战

以京东为例找出搜索平台上用户每天搜索排名5名的产品,The hottest!   用户登录京东网站,在搜索栏搜索的时候,将用户每天搜索排名前5名的商品列出来。     一:生成模拟京东用户搜索...
  • a11a2233445566
  • a11a2233445566
  • 2017年01月23日 17:02
  • 292

spark【例子】字典关联1

记录自己在学完scala和Spark基础后,实际中练习中写的spark例子。 大部分为spark单机运行模式代码,一般单机模式我就只贴代码、spark集群运行模式我会贴图。 例子描述:我们在日...
  • feloxx
  • feloxx
  • 2016年08月05日 00:37
  • 1185

spark sql简单示例java

运行环境 集群环境:CDH5.3.0 具体JAR版本如下: spark版本:1.2.0-cdh5.3.0 hive版本:0.13.1-cdh5.3.0 ...
  • LanSeTianKong12
  • LanSeTianKong12
  • 2016年07月22日 10:37
  • 7816

Spark SQL+Spark Streaming案例

package SparkStreaming import org.apache.spark.SparkConf import org.apache.spark.sql.{Row, SQLConte...
  • accptanggang
  • accptanggang
  • 2016年11月10日 16:34
  • 773

Spark版本定制第1天:通过案例对SparkStreaming透彻理解之一

1
  • lhui798
  • lhui798
  • 2016年05月03日 18:23
  • 437

Spark定制班第1课:通过案例对Spark Streaming透彻理解三板斧之一:解密Spark Streaming另类实验及Spark Streaming本质解析

从今天起,我们踏上了新的Spark学习旅途。我们的目标是要像Spark官方机构那样有能力去定制Spark版本。     我们最开始将从Spark Streaming入手。     为何从Spark S...
  • andyshar
  • andyshar
  • 2016年05月02日 07:41
  • 9501

Spark Streaming 订单关联案例剖析

Spark Streaming 订单关联案例剖析 本文将详细介绍如何使用 Spark Streaming 流计算框架并结合 Kafka、Flume 等实时处理搜索词、订单以及订单搜索词来关联...
  • javastart
  • javastart
  • 2015年11月04日 09:37
  • 523

常见的七种Hadoop和Spark项目案例

有一句古老的格言是这样说的,如果你向某人提供你的全部支持和金融支持去做一些不同的和创新的事情,他们最终却会做别人正在做的事情。如比较火爆的Hadoop、Spark和Storm,每个人都认为他们正在做一...
  • zhf257
  • zhf257
  • 2015年09月13日 22:17
  • 2479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用实例讲解Spark Sreaming
举报原因:
原因补充:

(最多只允许输入30个字)