热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flink1.15DataSream连接器——FileSystem源码阅读及代码示例

接上篇《Flink1.15DataSream连接器——FileSystem》文章目录代码全景UML图FileSource去除掉Deprecated被弃用类去掉工具类、参数配置类等F




接上篇《Flink1.15 DataSream 连接器 —— FileSystem》



文章目录


  • 代码全景
  • UML 图
    • File Source
      • 去除掉@Deprecated被弃用类
      • 去掉工具类、参数配置类等

    • File Sink
      • 去除掉@Deprecated被弃用类
      • 去掉工具类、参数配置类等

    • File Table

  • 代码示例
  • 结语



代码全景

在这里插入图片描述
在这里插入图片描述

从上图中可以看到src和sink ,以及隐藏在下面的table,这仨个目录分别是:


  • src: 即File Source,也是Source API,这是一个读取文件的统一数据源——且可以批处理和流模式读取
  • sink: 即File Sink,也是Sink API ,文件接收器将传入的数据写入桶中。考虑到传入的流可以是无界的,每个桶中的数据被组织成有限大小的部分文件。桶行为是完全可配置的,使用默认的基于时间的桶,我们每小时开始写一个新桶。这意味着每个生成的桶将包含从流中间隔1小时接收到的记录的文件
  • table:即table API,在官网上暂时没有看到介绍这个table目录下相关api,本次也不会阅读该部分源码

UML 图

上面大概看了代码在idea中结构,现在再来看下各个模块的uml类图,理解起来更加方便。


File Source

在这里插入图片描述
上面是src的全景图,现在我们可以试着裁剪一下,看最后主要的类有哪些,分别是干什么用的?


去除掉@Deprecated被弃用类

reader/FileRecordFormat.java
reader/TextLineFormat.java
impl/FileRecordFormatAdapter.java


去掉工具类、参数配置类等

在这里插入图片描述

上图中可以看出创建一个文件源FileSource。并且在其类内部FileSourceBuilder,您可以在其上配置文件源的所有属性。在上图中,可以看到创建切片分发器,监控间隔时间,文件枚举器,还有阅读器的文件格式类型,有无边界,切割器序列化等。
在这里插入图片描述
切片分发器。
在这里插入图片描述
SplitEnumerator负责发现和标识要读取的文件,并将它们分配给SourceReader。
在这里插入图片描述
SourceReader请求它需要处理的文件,并从文件系统读取文件。
在这里插入图片描述


File Sink

在这里插入图片描述
上面是sink的全景图,现在我们可以试着裁剪一下,看最后主要的类有哪些,分别是干什么用的?


去除掉@Deprecated被弃用类

没有需要弃用的类


去掉工具类、参数配置类等

在这里插入图片描述
文件接收器将传入的数据写入桶中。考虑到传入的流可以是无界的,每个桶中的数据被组织成有限大小的部分文件。桶行为是完全可配置的,使用默认的基于时间的桶,我们每小时开始写一个新桶。这意味着每个生成的桶将包含从流中间隔1小时接收到的记录的文件。

桶目录中的数据被分割为部分文件。每个桶将包含接收到该桶数据的接收器的每个子任务的至少一个部分文件。附加的零件文件将根据可配置的滚动策略被创建。对于行编码格式(请参阅文件格式),默认策略根据大小、指定文件可打开的最长时间的超时和关闭文件的最长不活动超时来滚动部分文件。对于Bulk-encoded format,我们滚动每个检查点,用户可以根据大小或时间指定附加条件。

另外上图中可以看到BulkformatBuilder and RowformatBuilder,然后里面有很多方法,这些具体的操作的类都在sink这个目录下。


File Table

在这里插入图片描述

table目录下的源码请自行阅读。


代码示例

github地址奉上,就不占用篇幅了。
FileSource and FileSink代码案例


结语

最后,提醒一下看源码的小伙伴们,最好看下test目录下的测试类,flink源码中提供了很多测试类,可以细节到具体的方法,所以值得一看。

欢迎批评指正,谢谢。







推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • Thisissuewasoriginallyopenedbyashashicorp/terraform#5664.Itwasmigratedhe ... [详细]
author-avatar
mizrke
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有