资讯专栏INFORMATION COLUMN

spark系列-结构化数据流-数据源

IT那活儿 / 1175人阅读
spark系列-结构化数据流-数据源

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!

简  介


自spark2.0之后,DataFrame和DataSet可以表示静态有界数据也可以表示无界流数据,可以使用相同入口点SparkSession从流源创建DataFrame/DataSet。可以通过spark.readStream()来创建流。
实现端到端一次传输是结构化数据流设计的目标之一,为了实现这一目标,我们设计了数据源,接收器和执行引擎,以可靠的跟踪处理进度,从而可以通过重新启动或重新处理来处理任何类型的故障。
每个数据源都有偏移量(例如kafka)来跟踪流中的读取位置,执行引擎使用检查点(checkpoint)和预写日志(write-ahead logs)记录每次触发后正在处理数据的偏移范围,接收器使用幂等接受,这样结构化数据流就会保证端到端一次性传输。


内置数据源


1. File source:读取目录中的文件,将按照文件修改时间进行处理,如果设置latestFirst,则处理文件顺序将颠倒,支持的文件格式有text、csv、json、orc、parquet,请注意文件必须以原子方式放置在目录中,大多数文件系统中可以通过文件移动操作来实现。
2. Kafka source:读取kafka数据,兼容kafka broker0.10.0或更高版本。
3. Socket source(用于测试):从socket连接中读取数据,监听socket套接字,只能用于测试,因为不支持端到端一次传输保证。
4. Rate source(用于测试):以每秒指定的行数生成数据,每个输出行包含时间戳和值。其中,timestamp是包含消息分派时间的时间戳类型,value是包含消息计数的Long类型,从0开始作为第一行。此源用于测试和基准测试。


案  例


创建socket 流。
创建文件流。
可以通过DF.isStreaming来判断数据集是否是流数据。
自spark 3.1开始,也支持根据DataStreamReader.table()来创建结构化数据流。
当读取目录时如果存在key=value形式的子目录时,将自动递归到这些目录中并发生分区,查询启动时组成分区方案的目录必须存在,必须保持静态,例如当/data/year=2015存在时,添加/data/year=2016是没问题的,改变分区列是无效的,例如增加目录/data/date=2016-04。




本文作者:潘宗昊

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129582.html

相关文章

  • Spark 』4. spark 之 RDD

    摘要:是设计用来表示数据集的一种数据结构。而正因为满足了这么多特性,所以把叫做,中文叫做弹性分布式数据集。按照这篇论文中文译文的解释,窄依赖是指子的每个分区依赖于常数个父分区即与数据规模无关宽依赖指子的每个分区依赖于所有父分区。 原文链接 写在前面 本系列是综合了自己在学习spark过程中的理解记录 + 对参考文章中的一些理解 + 个人实践spark过程中的一些心得而来。写这样一个系列仅仅是...

    timger 评论0 收藏0
  • Spark 』2. spark 基本概念解析

    摘要:原文基本概念解析写在前面本系列是综合了自己在学习过程中的理解记录对参考文章中的一些理解个人实践过程中的一些心得而来。是项目组设计用来表示数据集的一种数据结构。 原文:『 Spark 』2. spark 基本概念解析 写在前面 本系列是综合了自己在学习spark过程中的理解记录 + 对参考文章中的一些理解 + 个人实践spark过程中的一些心得而来。写这样一个系列仅仅是为了梳理个人学习...

    Luosunce 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<