• Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming


    Spark Streaming揭秘 Day29

    深入理解Spark2.x中的Structured Streaming

    在Spark2.x中,Spark Streaming获得了比较全面的升级,称为Structured Streaming,和之前的很不同,功能更强大,效率更高,跟其他的组件整合性也更好。

    连续应用程序continuous application

    首先,也是最重要的,在2.x中,提出了一个叫做continuous applications连续应用程序的概念。
    如下图所示,数据从Kafka中流进来,通过ETL操作进行数据清洗,清洗出来作为目标数据进行进一步处理,可能是机器学习,也可能是交互式查询,也有可能直接把数据存在数据库或者其他外部存储设备,也有可能是直接交给已有的应用程序。也就是说SparkStreaming从获得数据后,能把全部处理环节串联起来,称之为端到端(End to end)处理!!!
    Snip20160618_15
    举个例子:如果要将货物进行海运,大致会下面这些阶段:
    货物从仓库运出-->出来之后装上车-->到车开动-->车在马路上行驶-->到了码头停下来-->货物从车上卸下来-->从陆地上弄到船上。
    这些阶段一环扣一环,每一环都有责任,都会有风险。
    continuous application的模型就与这个类似,在充分应对风险的前提下,可以串联业务的全部过程!!!

    无边界表unbounded table

    对SparkStreaming来说,Continuous还有另一层含义,即运行在DataSet和Dataframe之上。
    基本观点是把数据看成一张表,默认情况下DataSet和Dataframe中的表是有边界的,而在流处理中是无边界的。对于SparkStreaming来说,是将数据抽象为了一个没有边界的表!!!

    这个做法有一个非常大的好处,我们知道,目前SparkStreaming是直接依赖RDD,优化需要自己完成,使用DataSet和Dataframe就可以利用Tungsten引擎来进行优化。把Tungsten等优化技术轻而易举的应用起来,可以说是在技术的运用上促进化学反应的发生。

    Snip20160618_20

    新加入的Planner就类似路由器,我们在使用时,可以按照时间说明,由planner确定每次读取的位置,在运行时动态绑定位置。在这种模式下,没有数据收集再处理的概念,认为数据一直在那儿,直接拿了处理就行。这可以极大的简化对流处理的理解。

    Snip20160618_21

    增量输出模式delta output

    在2.x中,增加了很多输出模式,delta output是其中的一种最重要的一种。
    增量更新,也就是说有需要更新数据的才会更新,其他的不变。Trigger会不断检测输入数据,在不断的进行处理之后,输出结果只更新需要更新的内容,这个更符合我们应用程序的处理场景。

    Snip20160618_19

    API简化

    在API方面,引入和流函数的封装。
    这边举个例子:Kafka中读取的数据,通过stream方法形成流,就可以直接与jdbc中读取的数据在DataSet层面就进行Join,不用使用transform或者foreachRDD方法。
    stream方法底层依赖Dataset和Dataframe,集成了SparkSql和Dataset几乎所有的功能,把流处理的代码编写一下子简化了很多。

    Snip20160618_18

    其他改进

    2.x同时也解决了DStream的很多问题。

    1. 增加了eventTime的概念,在原有基于mini batch处理的基础上,学习了Storm基于每个record的事件处理机制。
    2. serve using JDBC,可以把SparkStreaming抽象成一个数据库,直接通过jdbc访问数据。
    3. change queries,在运行时可以变更query,并支持多个query并行运行。

    Snip20160618_16

    小结

    从2.x的设计来看,从更根本上,是为了满足更快Faster、完全容错fault-tolerant、完全的语义一致性exactly的要求。
    通过实现有状态流处理,让我们的功能更强大。而基于DataSet和Dataframe处理,让我们忘记流的概念,使用将会越来越简单。

    欲知后事如何,且听下回分解!

    DT大数据每天晚上20:00YY频道现场授课频道68917580

  • 相关阅读:
    获取spring源码并导入到eclipse
    Android的EditText设置可编辑与不可编辑的方法
    漫谈设计模式笔记:模板模式
    jfreechar中文乱码设置主题样式解决
    FrameLayout布局下让图片居中的方法
    java典型模块实例1:英文,数字,中文混合的验证码
    学习Lucene笔记一:创建索引
    How to Display a PDF File in a HTML Web Page
    NET数据类型及字节数
    2012年1月编程语言排行榜
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5597353.html
Copyright © 2020-2023  润新知