《spark实战》笔记08--应用库--Spark Streaming

来源:《spark实战》讲义


[1 ] Spark Streaming介绍

  • Spark Streaming属于Spark的核心api, 它支持高吞吐量、支持容错的实时流数据处理。
  • 它可以接受来自Kafka, Flume, Twitter, ZeroMQ和TCP Socket的数据源,使用简单的api函数比如 map, reduce, join, window等操作,还可以直接使用内置的机器学习算法、图算法包来处理数据。

在这里插入图片描述


[2 ] Spark Streaming实时计算框架

在这里插入图片描述


  • Spark Streaming是建立在Spark上的实时计算框架,通过它提供丰富的API、基于内存的高速执行引擎,用户可以结合流式、批处理和交互试查询应用。
     Saprk的低延迟执行引擎(100MS+)可以用于实时处理
     相比于strom(基于Record),RDD数据更容易做容错。
     可以与kafka,Flume,ZeroMQ等进行数据源的对接
     小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

[3 ] Spark Streaming特有的RDD

  • updateStateByKey :
    以DStream中的数据进行按key做reduce操作,然后对各个批次的数据进行累加
    在有新的数据信息进入或更新时,可以让用户保持想要的任何状态。
    使用这个功能需要完成两步:
    1) 定义状态:可以是任意数据类型
    2) 定义状态更新函数:用一个函数指定如何使用先前的状态,从输入流中的新值更新状态。

  • Windows:
    (1) window length: window的长度是30秒,最近30秒的数据
    (2) slice interval: 计算的时间间隔


[4 ] Windows操作
先举个例子吧,比如前面的word count的例子,我们想要每隔10秒计算一下最近30秒的单词总数
val windowedWordCounts =
pairs.reduceByKeyAndWindow( _+ _, Seconds(30), Seconds(10) )
在这里插入图片描述

  • Spark Streaming中滑动窗口的叠加处理和增量处理
    在这里插入图片描述

  • Smart window-based countByValue
    val tagCounts =
    hashtags.countByValueAndWindow(Seconds(30), Seconds(10) )

在这里插入图片描述


扩展性与吞吐量
在这里插入图片描述


[5 ] Strom Vs Spark Streaming

  • 处理模型,延迟
    虽然这两个框架都提供可扩展性和容错性,它们根本的区别在于他们的处理模型。而Storm处理的是每次传入的一个事件,而Spark Streaming是处理某个时间段窗口内的事件流。因此,Storm处理一个事件可以达到秒内的延迟,而Spark Streaming则有几秒钟的延迟。
  • 容错、数据保证
    如果你需要秒内的延迟, Storm是一个不错的选择,而且没有数据丢失。如果你需要有状态的计算,而且要完全保证每个事件只被处理一次, Spark Streaming则更好。
    Spark Streaming编程逻辑也可能更容易,因为它类似于批处理程序(Hadoop),特别是在你使用批次(尽管是很小的)时。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值