实时数据开发|Flink如何实现不同数据源输入--DataSource模块

news/2024/12/1 7:50:07/

DataStream 编程模型

Flink定义DataStream API让用户灵活且高效的编写流式应用。主要分为3部分:DataSource模块,Transformation模块以及DataSink模块。

  1. DataSource模块,主要定义了数据接入功能,将外部数据接入至flink,并将接入数据转换成对应的datastream数据集。
  2. Transformation 模块定义了对 DataStream 数据集的各种转换操作,例如进行 map、filter、windows等操作。
  3. 最后,将结果数据通过Datasink模块写出到外部存储介质中,例如将数据输出到文件或Kaka消息中间件等。

今天主要讲DataSources:

DataSources数据输入

DataSources 模块定义了DataStream API中的数据输人操作,Flink将数据源主要分为的内置数据源第三方数据源两种类型。其中内置数据源包含文件、Socket网络端口以及集合类型数据,其不需要引人其他依赖库,且在Flink系统内部已经实现,用户可以直接调用相关方法使用。第三方数据源定义了Flink和外部系统数据交互的逻辑,包括数据的读写接口。在Flink中定义了非常丰富的第三方数据源连接器(Connector),例如Apache kafka Connector、Elatic Search Connector等。同时用户也可以自定义实现Flink中数据接人函数 SourceFunction,并封装成第三方数据源的Connector,完成Flink与其他外部系统的数据交互。

内置数据源

  1. 文件数据源:flink支持将文件内容读取到系统中,并转换成分布式数据集DataStream进行数据处理。readFile时可以指定文件读取类型(WatchType),检测文件变换时间间隔(interval)、文件路径过滤条件(FilePathFilter)等参数。watchtype分为PROCESS_CONTINUOUSLY和PROCESS_ONCE模式,前置检测到文件内容变化会加载全部内容到Flink;而后者只加载变化的数据,即数据只被读取、处理一次。因此后一种方式才能保证Exactly Once级别的数据一致性保障
  2. Socket数据源:参数为IP地址和端口。
  3. 集合数据源:Flink可以直接将集合类(collection)转换成datastream数据集,本质上是将本地集合中的数据分发到远端并行执行的节点中。注意集合内的数据结构需要一致,否则可能出现数据转换异常。

外部数据源

  1. 数据源连接器
    前面提到的数据源类型都是些基本的数据接人方式,其实质是实现了不同的SourceFuncion,Fink将其封装成高级API,减少用户的使用成本。
    对于流式计算类型的应用,数据大部分都是从外部第三方系统中获取。Flink定义了非常丰富的第三方数据连接器:
  • 其中部分连接器是仅支持读取数据,例如Netty等;
  • 一部分仅支持数据输出(Sink):Elasticsearch、Hadoop FileSystem等。
  • 还有一部分是支持数据输入和输出:例如 Apache Kafka、Amazon Kinesis连接器。例如kafka connector中使用的主要参数有:kafka topic、bootstrap.servers、zookeeper.connect。
  1. 自定义数据源连接器。可以通过实现SourceFunction定义单个现成的接入的数据接入其,也可以实现parallelSourceFunction接口定义并发数据源接入器。

http://www.ppmy.cn/news/1551423.html

相关文章

NCL数据分析与处理

原文:NCL数据分析与处理https://mp.weixin.qq.com/s/0a9_gllN43WfuZgNHKiyDw?token1542274306&langzh_CNNCL用于科学数据计算和可视化的免费软件。它有着非常强大的文件输入和输出功能,可读写netCDF-3、netCDF-4 classic、HDF4、binary、ASCII数据&…

《向量数据库指南》——MoE应用:解锁深度学习新境界的钥匙

在深度学习的广阔天地里,混合专家(MoE)模型如同一把锐利的钥匙,正逐步解锁着各种复杂应用场景的新境界。作为大禹智库的向量数据库高级研究员,同时也是《向量数据库指南》的作者,我深感MoE模型在推动AI技术向前发展中所扮演的重要角色。今天,我将带大家深入探讨MoE模型在…

flutter 多语言 国际化 flutter Intl的使用方法

一使用 flutter Intl Android studio需要添加插件 flutter Intl 路径 File>>Settings>>Plugins>>Marketplace>>flutter Intl>>Install 安装插件重新启动Android studio Android studio 创建一个flutter测试的新项目 在项目文件中配置 ** 添加…

IIS管理器、Sql Server、windows操作系统,nginx

在windows操作系统下(win 10),安装完成之后,界面是这样的 IIS管理器分左中右三个大块,左边为服务器目录,中间为功能图标,右边为操作选项(左边、中间选择不同功能是会随之显示相关操…

以达梦为数据库底座时部署的微服务页面报乱码,调整兼容模式

1.问题描述 部署微服务,文件、代码是延用的mysql类型的,部署前做了部分适配,但是在使用dm数据库进行安装的服务在页面上查询出的数据却都是乱码 2.查询官网,注意到一个参数COMPATIBLE_MODE兼容模式的配置 考虑是延用mysql&…

【前端】Vue3+Vite如何进行多环境配置呢

在项目或产品的迭代过程中需要分不同的环境,那么使用vitevue3开发时,该如何进行配置呢 1、添加配置文件 .env.xxx .env.xxx 需要与src在同一级目录下 例如: 开发环境: .env.development 开发环境: .env.test 生产环…

day 28 第八章 贪心算法 part02

第一题:122.买卖股票的最佳时机II 解题思路 本题要求根据给定的股票每日价格数组 prices,找出能获得的最大利润,解题思路主要基于贪心算法,核心思想是只要相邻两天存在价格差(后一天价格高于前一天价格)就…

读《Effective Java》笔记 - 条目13

条目13:谨慎重写clone方法 浅拷贝和深拷贝 浅拷贝(Shallow Copy) 浅拷贝 只复制对象本身,而不复制对象引用的成员。 对于引用类型的字段,浅拷贝会将原对象的引用复制到新对象中,而不会创建新对象实例。因…