[Spark]-结构化流之初始篇

1.什么是结构化流.

  结构化流(Structured Streaming),是一种基于Spark-SQL引擎构建的,可容错的,可扩展的流处理引擎.

  它以微批量计算的形式来表达流式计算,随着流式数据持续到达,它能持续的进行处理并更新最终计算结果.

  它使用Spark-SQL带来的丰富的API,来表示流聚合(streaming aggregations),事件时间窗口( event-time windows),流到批处理连接(stream-to-batch joins)等,最终在同一个引擎(优化的Spark-SQL引擎)执行.

    并且,系统能以检查点(CheckPoint)和预写日志(Write Ahead Logs),来确保端到端的(end-to-end)有且仅有一次(exactly-once)的容错保证.

  它的微批处理机制,可以将端到端的延迟降低到100毫秒以下,而在2.3版本中,新提供了一种连续处理(Continuous Processing)机制,将这种端到端的延迟进一步降低到1毫秒以内

  简单来说,结构化流提供一种快速的,可容错的,可扩展的,端到端有且仅有一次保证的流式处理方案

2.结构化流与流式处理(Streaming)

  结构化流是Spark2.X时代提出的新一代流式计算框架.

  它相当于Streaming的增强版,从就旧的来说,它可以完全覆盖Streaming的功能,从新的来说,它还具有以下的演进:

    Streaming是按时间分片为DStream,这导致Streaming很难基于event-time,来处理数据延时,甚至数据乱序的情况.而结果化流是视为一个无界DataFrame,输出结果映射为另一张表.天然支持乱序情况.

    流式(使用RDD)和批处理(使用Spark-SQL)API不能保持完全兼容,程序代码需要做一些转换才行

    端到端的保障机制由用户维护,难以处理增量更新和持久化存储一致的问题

3.编程模型

  3.1 基本概念

    结构化流的核心思想是时间分片,是将实时数据流,视为一个不断增加(append)的表.这让它与普通的批处理非常类似

    但是,结构化流不实现整个表.它读取最新的可用数据流数据来源,处理结果逐步更新,然后丢弃的源数据.只保持在所需的最少的中间状态的数据更新结果

  3.2 基于事件时间处理数据延迟

    因为时间分片的机制,时间属性就是一个非常重要的属性.结构化流支持基于事件时间(Event-time)来处理.

    事件时间是嵌入在数据本身中.很多的时候,都需要基于事件时间而不是结构化流接受时间来处理.比如某些情况下,一部分数据到达出现延迟

  3.3 容错机制

原文地址:https://www.cnblogs.com/NightPxy/p/9271453.html

时间: 2024-10-09 22:03:22

[Spark]-结构化流之初始篇的相关文章

[Spark]-结构化流之用法篇

4.用法 结构化流使用Datasets和DataFrames.从Spark2.0开始,Spark-SQL中的Datasets和DataFrames,就已经能很好表示静态(有界)数据,动态(无界)数据 4.1 数据源 结构化流提供了四种不中断数据源 file-system,kafka,socket.rate-source 4.1.1 socket 从一个socket连接中读取 UTF-8 的文本数据. <=注意这是一种不可容错的数据源,建议仅在测试环境中使用. 配置参数: host  连接地址  

[Spark]-结构化流之输出篇

5.结构化流的输出 一旦定义好了streaming DataFrame/Dataset的最终结果,剩下的就是一些计算输出了.为此,必须使用 DataStreamWriter通过 Dataset.writeStream() 返回.此时必须以下一个或多个 输出落地 的详细信息:  Data format, location 等等 输出模式(Output mode) 查询名称(Query name)  可选,指定用于标识的查询的唯一名称 触发器间隔(Trigger interval):可选地,指定触发

[Spark]-结构化流之监控&amp;故障恢复篇

6 流的监控以及故障恢复 6.1.流的运行时数据    结构化流启动后返回的 StreamingQuery 对象. val query = df.writeStream.format("console").start() // get the query object query.id // get the unique identifier of the running query that persists across restarts from checkpoint data

spark结构化数据处理:Spark SQL、DataFrame和Dataset

本文讲解Spark的结构化数据处理,主要包括:Spark SQL.DataFrame.Dataset以及Spark SQL服务等相关内容.本文主要讲解Spark 1.6.x的结构化数据处理相关东东,但因Spark发展迅速(本文的写作时值Spark 1.6.2发布之际,并且Spark 2.0的预览版本也已发布许久),因此请随时关注Spark SQL官方文档以了解最新信息. 文中使用Scala对Spark SQL进行讲解,并且代码大多都能在spark-shell中运行,关于这点请知晓. 概述 相比于

[Spark]-结构化数据查询之数据源篇

7. 数据源 Spark-SQL 支持通过Dataframe接口对各种数据源进行操作 各种数据源的加载&保存 数据转换(relational transformations) 注册临时视图(temporary view),来允许SQL的形式直接对临时视图进行操作 7.1  数据源加载 Spark-SQL的默认数据源为parquet(spark.sql.sources.default设置),一些数据源加载的例子如下: /** * 加载parquet数据源 */ spark.read.load(&qu

【文智背后的奥秘】系列篇——结构化抽取平台

版权声明:本文由文智原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/91 来源:腾云阁 https://www.qcloud.com/community 随着大数据时代的到来,一个大规模生成.分享.处理以及应用数据的时代正在开启.如果能将互联网上异源异构的非结构化或半结构化数据转换为更易处理的结构化数据,可以极大的降低获取数据的门槛,为信息检索和数据挖掘提供基础,更好的挖掘数据中蕴藏的价值. 单纯考虑网页这种半结构化数据

Hadoop经典案例Spark实现(七)——日志分析:分析非结构化文件

相关文章推荐 Hadoop经典案例Spark实现(一)--通过采集的气象数据分析每年的最高温度 Hadoop经典案例Spark实现(二)--数据去重问题 Hadoop经典案例Spark实现(三)--数据排序 Hadoop经典案例Spark实现(四)--平均成绩 Hadoop经典案例Spark实现(五)--求最大最小值问题 Hadoop经典案例Spark实现(六)--求最大的K个值并排序 Hadoop经典案例Spark实现(七)--日志分析:分析非结构化文件 1.需求:根据tomcat日志计算ur

Spark SQL是处理结构化的数据

Spark SQL是处理结构化的数据,可以存储在二维表中,类似数据库中的表一样存储数据 Spark1.x val sqlContext = new SparkContext(conf) val sqlContext = new SQLContext(sc) //将RDD和Schema信息关联到一起,1,RDD和case class 2,RDD和StructType //case class Person将RDD中的数据转换成case class 属性相对应的类型,然后设置到case class中

Salesforce开源TransmogrifAI:用于结构化数据的端到端AutoML库

AutoML 即通过自动化的机器学习实现人工智能模型的快速构建,它可以简化机器学习流程,方便更多人利用人工智能技术.近日,软件行业巨头 Salesforce 开源了其 AutoML 库 TransmogrifAI.Salesforce Einstein 数据科学高级总监 Shubha Nabar 在 Medium 上撰文介绍了该 AutoML 库,包括工作流程和设计原则等. GitHub 链接:https://github.com/salesforce/TransmogrifAI Transmo