• Spark Streaming揭秘 Day24 Transformation和action图解


    Spark Streaming揭秘 Day24

    Transformation和action图解

    今天我们进入SparkStreaming的数据处理,谈一下两个重要的操作Transfromation和action背后的故事。

    InputReceiver

    根据前面的课程,我们知道Transformation是逻辑级别的状态转换,并没有真的发生。
    让我们从第一个Transformation,也就是SocketTextStream开始。

    这里需要注意的是,这里返回的是字符串类型,这个是通过converter也就是byteToLine方法来实现的。
    Snip20160610_15

    进入父类,也就是SocketInputDStream。
    其中关键对象是SocketReceiver,其中比较关键的是调用了hasNext方法,这里用到了一个命令模式,具体会指向socketTextStreamin传入的byteToLine方法生成。
    Snip20160610_16

    在伴生对象中我们看到了byteToLine的实现,具体实现了一个命令。
    Snip20160610_18

    此外,onStop方法为空,没有清空资源,因为在receive方法中已经进行了处理,如果当停止时会中断。
    Snip20160610_17

    进入到SocketReceiver的父类Receiver

    其中的关键方法是restart,它会告诉supervisor去重新启动,并用了一个future对象实现了异步调用。

    Snip20160610_19

    InputDStream

    下面让我们转入DStream。

    首先看下,ReceiverInputDStream,关键方法是compute,输入流以时间为单位计算产生RDD,也说明了ReceiverInputDStream的实例对象是在Driver中的。

    Snip20160610_20

    进入父类InputDStream。

    这里有一个关键代码,将inputDStream添加至DStreamGraph中。
    Snip20160610_21

    DStreamGraph

    DStreamGraph是作为整个DStream处理的枢纽存在。包含所有的输入和输出。
    Snip20160610_22

    outputStreams的作用是应用程序可能包含多个action,那么每个action会对应一个outputStream,同时每个outputStream生成一个Job。
    outputStreams都是通过DStream的register方法来生成的。
    Snip20160610_23

    自此,基本对Transformation和action中设计的对象进行了一下遍历。

    小结

    下面开始绘图,从两个基本数据结构inputStreams和outputStreams出发,在继承结构中表现的数据结构存储大家要注意。

    ![第24讲Spark Streaming的Transaction、Action、Input和Output源码图解](http://o6jujlzry.bkt.clouddn.com/2016-06-11-第24讲Spark Streaming的Transaction、Action、Input和Output源码图解.png)

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

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

  • 相关阅读:
    log4j 悟寰轩
    初学PHP 悟寰轩
    java基本语法注意问题 悟寰轩
    HTTP协议基础 悟寰轩
    SSHweb.xml详解 悟寰轩
    windows和linux查找被入侵后留下的后门文件 悟寰轩
    MFC Link problem
    Manually Walking a Stack
    linux试用(2)安装 mplayer, g++
    子集和问题
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5574429.html
Copyright © 2020-2023  润新知