云计算百科
云计算领域专业知识百科平台

Spark-Streaming

Spark-Streaming概述

Spark Streaming 用于流式数据的处理

Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter等,以及和简单的 TCP 套接字等等

数据输入后可以用 Spark 的高度抽象原语如:map、reduce、join、window 等进行运算。而结果也能保存在很多地方,如 HDFS,数据库等

和 Spark 基于 RDD 的概念很相似,Spark Streaming 使用离散化流(discretized stream)作为抽象表示,叫作 DStream

DStream 是随时间推移而收到的数据的序列

Spark-Streaming的特点

  • 易用性:Spark Streaming支持Java、Python、Scala等编程语言,可以像编写离线程序一样编写实时计算的程序

  • 容错:Spark Streaming在没有额外代码和配置的情况下,可以恢复丢失的数据。对于实时计算来说,容错性至关重要

  • 易整合:Spark Streaming可以在Spark上运行,并且还允许重复使用相同的代码进行批处理。也就是说,实时处理可以与离线处理相结合,实现交互式的查询操作

  • Spark-Streaming架构

    架构图:

    DStream实操

    实例:

    使用 netcat 工具向 9999 端口不断的发送数据,通过 SparkStreaming 读取端口数据并统计不同单词出现的次数

    添加spark-streaming的依赖

    代码:

    在虚拟机启动netcat并发送数据

    运行结果:

    案例解析:

    Discretized Stream 是 Spark Streaming 的基础抽象,代表持续性的数据流和经过各种 Spark 原语操作后的结果数据流。在内部实现上,DStream 是一系列连续的 RDD 来表示。每个 RDD 含有 一段时间间隔内的数据

    对数据的操作也是按照 RDD 为单位来进行的

    计算过程由 Spark Engine 来完成

    Spark-Streaming核心编程

    DStream 创建

    创建DStream的三种方式:RDD队列、自定义数据源、kafka数据源

    RDD队列

    可以通过使用 ssc.queueStream(queueOfRDDs)来创建 DStream,每一个推送到这个队列中的 RDD,都会作为一个DStream 处理

    实例:

    循环创建几个 RDD,将 RDD 放入队列。通过 SparkStream 创建 Dstream,计算 WordCount

    运行结果:

    自定义数据源

    自定义数据源需要继承 Receiver,并实现 onStart、onStop 方法来自定义数据源采集

    案例:

    自定义数据源,实现监控某个端口号,获取该端口号内容

    运行结果:

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Spark-Streaming
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!