| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Flink / Scala - DataSource 之 DataStream 获取数据总结 -> 正文阅读 |
|
[大数据]Flink / Scala - DataSource 之 DataStream 获取数据总结 |
一.引言DataStream API 得名于特殊的
你可以通过在 Flink 程序中添加 source 创建一个初始的
?Tips: 与之前不同的是,DataSet 的执行环境为:
DataStreaming 的执行环境为:
? 二.FileBased 基于文件这里大部分接口与 DataSet 类似,由于 env 的不同,得到的最终类型也不同,由 DataSet 变为了 DataStreaming 1.readTextFile(path)读取文本文件,例如遵守 TextInputFormat 规范的文件,逐行读取并将它们作为字符串返回。
2.readFile(fileInputFormat, path)按照指定的文件输入格式读取(一次)文件。
3.readFile(fileInputFormat, path, watchType, interval, pathFilter, typeInfo)上述两个方法是基于 API 直接调用的,底层调用函数为该函数,该方法它基于给定的? Tips: 在底层,Flink 将文件读取过程拆分为两个子任务,即?目录监控?和?数据读取。每个子任务都由一个单独的实体实现。监控由单个非并行(并行度 = 1)任务实现,而读取由多个并行运行的任务执行。后者的并行度和作业的并行度相等。单个监控任务的作用是扫描目录(定期或仅扫描一次,取决于? FileProcessingMode.PROCESS_CONTINUOUSLY 当一个文件被修改时,它的内容会被完全重新处理。这可能会打破 “精确一次” 的语义,因为在文件末尾追加数据将导致重新处理文件的所有内容。 FileProcessingMode.PROCESS_ONCE source 扫描一次路径然后退出,无需等待 reader 读完文件内容。当然,reader 会继续读取数据,直到所有文件内容都读完。关闭 source 会导致在那之后不再有检查点。这可能会导致节点故障后恢复速度变慢,因为作业将从最后一个检查点恢复读取。
三.Collection-Based1.fromCollection(Collection)从 Java Java.util.Collection 创建数据流。集合中的所有元素必须属于同一类型。当然,使用 scala 的转换后,scala 对应的 collection 也可以使用,这里使用方法和 DataSet 类似。
2.fromCollection(Iterator, Class)从迭代器获取,class 参数指定返回值返回元素的数据类型
3.fromElements(T ...)从给定的对象序列中创建数据流。所有的对象必须属于同一类型。
4.fromParellelCollection(SplittableIterator, Class)?从迭代器并行创建数据流。class 参数指定迭代器返回元素的数据类型。
5.generateSequence(from, to)
四.Socket-Based从 Socket 读取。元素可以由分隔符分隔。 1.启动 Socket在本地 terminal 执行下列语句并输入一下字符:
? 2.读取 Socket
?上面是使用 keyBy 对 5S 滚动窗口内的单词进行 wordCount 的实例,下面是输出结果:
持续输入一些单词程序会每5s统计一个窗口内的 wordCount。 五.AddSource1.官方 API上一边文章提到了 Flink 支持的外部 API 以及对应支持的运行方式,下述 Connector 类别中支持 source 的均可以调用官方 API 和 Maven 依赖进行数据读取与加载生成 DataStream。
2. Self-Defined自定义数据源需要继承 RichSourceFunction[T] 并定义数据类型 T,?主要实现 run 方法 - 获取数据与 cancel 方法 - 停止获取数据,这里和 Spark-Streaming 自定义 receiver,Storm 自定义实现 spout 类似,下面例子将以1s为间隔持续从文本中读取新内容并输出:
? 六.总结结合上一篇?Flink / Scala - DataSource 之 DataSet 获取数据总结,Flink 两种数据结构的获取 - DataSet / DataStream 就都介绍完了,作为流式处理引擎,Flink 更擅长于处理 DataStream 流式数据,后续也会介绍更多的流式数据处理方法。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:00:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |