Spark2.0 Structured Streaming

Spark Streaming的流处理基于时间间隔的批处理
这个世界上所有事情是由时间主宰的
Structured Streaming预计在Spark 2.3的时候成熟

认识Structured Streaming

  1. 以前输入输出是Input Output,现在是Input Table 和 Output Table。
    看名字就知道多出了一个表,
    可以理解为输入的数据不直接用于计算而是先放到一个表里,那是一个增量表,输出结果也是这样,
    先放到一个表里,这也是一样增量表,基于表的增量计算,可以叠加结果
    这里写图片描述
    这样的好处是可以把结果作为流处理数据服务中心!

  2. 数据可以带有原始的时间戳
    以前的sparkstreaming对于延后的数据的处理是将之放于最后的batch里处理的,
    比如处理间隔是一个小时,一个小时前的数据由于网络等问题现在才接收到,
    那就会把这数据放在这个小时的batch中处理,但是现在数据有了时间戳后,
    就会将数据放在上个batch 来处理
    这里写图片描述

  3. ForeachWriter
    以前对于写入数据库的数据,是先从各个节点收集数据到Driver,再从Driver写到数据库里面,
    用的是foreach/foreachPartitioner。而现在有了ForeachWriter 这个方法
    abstract class ForeachWriter[T] extends Serializable
    里面有三个方法

    datasetOfString.write.foreach(new ForeachWriter[String] {
    def open(partitionId: Long, version: Long): Boolean = {
    // open connection
    }
    
    def process(record: String) = {
    // write string to connection
    }
    
    def close(errorOrNull: Throwable): Unit = {
    // close the connection
    }
    })

    因为已经继承自Serializable,所以是发送到每个Executor中,让每个Executor去连接数据库并写入数据。
    这就实现了分布式地写入数据库中。(写的时候写入小表)

  4. 从总体上而言,推出了一个新概念 Continuous Application
    不管是Storm还是以前的Spark Streaming都不能保证离线处理数据的结果与流处理数据的结果是完全一 致的,但是Structured Streaming能保证这一点,因为是端对端的处理,Structured Streaming终将一统大数据流处理,从而确定Spark大数据的霸主地位 : )

以上内容部分来自[DT大数据梦工厂]首席专家Spark专家王家林老师的课程分享。感谢王老师的分享,更多精彩内容请扫描关注[DT大数据梦工厂]微信公众号DT_Spark

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值