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

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.rhkb.cn/news/481471.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解Linux的select、poll 和 epoll:从原理到应用场景

I/O 多路复用并不是什么新东西,select 早在 1983 年就出现了,poll 在 1997 年,epoll 是 2002 年的产物。面试题总爱问“多路复用多厉害?”其实它就是把轮询的锅甩给了操作系统,而操作系统不过是用 CPU 指令帮你完成事件…

阅读方法论

选择固有缺陷,选项是对比出来的

关于函数式接口和编程的解析和案例实战

文章目录 匿名内部类“匿名”在哪里 函数式编程lambda表达式的条件Supplier使用示例 ConsumeracceptandThen使用场景 FunctionalBiFunctionalTriFunctional 匿名内部类 匿名内部类的学习和使用是实现lambda表达式和函数式编程的基础。是想一下,我们在使用接口中的方…

ChatGPT 网络安全秘籍(二)

第三章:代码分析和安全开发 这一章深入探讨软件开发的复杂过程,关注当今数字世界中的一个关键问题:确保软件系统的安全。随着技术的不断复杂和威胁的不断演变,采用融合了安全考虑的安全软件开发生命周期(SSDLC&#x…

学习笔记044——HashMap源码学习2

文章目录 1、HasMap 底层实现2、HashMap 加载顺序 1、HasMap 底层实现 JDK 1.8 HashMap 底层设计涉及到三种不同的数据结构,分别是数组、链表、红黑树。 1、基本的存储是数组,根据 key 值求出一个数组下标,将元素(key-value&am…

计算机网络常见面试题总结(上)

计算机网络基础 网络分层模型 OSI 七层模型是什么?每一层的作用是什么? OSI 七层模型 是国际标准化组织提出的一个网络分层模型,其大体结构以及每一层提供的功能如下图所示: 每一层都专注做一件事情,并且每一层都需…

用micropython 操作stm32f4单片机的定时器实现蜂鸣器驱动

import pyb import time # 初始化引脚和定时器通道作为PWM输出 # 注意:这里我们假设您使用的是支持PWM的引脚和定时器 # 在不同的MicroPython板上,支持的引脚和定时器可能不同 # 请查阅您的板的文档以确认正确的引脚和定时器 buzzer_pin pyb.Pin(PD15,…

前端框架Vue3项目实战(基于Vue3实现一个小相册)

下面是是对Vue3操作的一个项目实战 下面代码是html的基本骨架&#xff08;没有任何的功能&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>相册</title> <style&…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-39

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

群控系统服务端开发模式-应用开发-前端短信配置开发

一、添加视图 在根目录下src文件夹下views文件夹下param文件夹下sms文件夹下&#xff0c;新建index.vue&#xff0c;代码如下 <template><div class"app-container"><div class"filter-container" style"float:left;"><el…

极致性能:19个Vue 项目的优化手段

前言 在前端开发领域&#xff0c;Vue.js 广泛应用于各种类型的项目中。然而&#xff0c;随着项目规模的扩大和用户需求的增加&#xff0c;性能优化的重要性愈发凸显。优化不仅可以提升用户体验&#xff0c;还能显著减少资源消耗&#xff0c;提高应用的响应速度和稳定性。 本文…

基于Java Springboot个人记账之财来财往微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

【maven-5】Maven 项目构建的生命周期:深入理解与应用

1. 生命周期是什么 ​在Maven出现之前&#xff0c;项目构建的生命周期就已经存在&#xff0c;软件开发人员每天都在对项目进行清理&#xff0c;编译&#xff0c;测试及部署。虽然大家都在不停地做构建工作&#xff0c;但公司和公司间&#xff0c;项目和项目间&#xff0c;往往…

LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率

文章目录 背景介绍第三方大模型API 介绍LLamafactory 部署API大模型 API 调用工具类项目开源 背景介绍 第三方大模型API 目前&#xff0c;市面上有许多第三方大模型 API 服务提供商&#xff0c;通过 API 接口向用户提供多样化的服务。这些平台不仅能提供更多类别和类型的模型…

【Python网络爬虫笔记】6- 网络爬虫中的Requests库

一、概述 Requests 是一个用 Python 语言编写的、简洁且功能强大的 HTTP 库。它允许开发者方便地发送各种 HTTP 请求&#xff0c;如 GET、POST、PUT、DELETE 等&#xff0c;并且可以轻松地处理请求的响应。这个库在 Python 生态系统中被广泛使用&#xff0c;无论是简单的网页数…

【AI技术赋能有限元分析应用实践】Abaqus有限元分析到深度学习方法应用全过程——汽车刹车片热力耦合分析

目录 一、项目实现介绍**项目背景****项目目标****项目流程概述****技术融合****项目价值** 二、实现流程**Step 1: 分析问题构建方法&#xff0c;寻找主要分析目标&#xff0c;确定初步目标****Step 2: 使用 Abaqus 完成有限元仿真&#xff0c;后处理并保存数据为 odb 格式***…

【人工智能-科普】深度森林:传统机器学习与深度学习的创新结合

文章目录 深度森林:传统机器学习与深度学习的创新结合一、什么是深度森林?二、深度森林的工作原理1. **特征提取和转换**2. **多层级训练**3. **最终分类**三、深度森林的关键组成部分1. **森林层(Forest Layer)**2. **级联结构(Cascade Structure)**3. **特征增强(Feat…

Netty的内存池机制怎样设计的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的内存池机制怎样设计的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的内存池机制怎样设计的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 的内存池机制设计是为了提高性能&…

Postman设置接口关联,实现参数化

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 postman设置接口关联 在实际的接口测试中&#xff0c;后一个接口经常需要用到前一个接口返回的结果&#xff0c; 从而让后一个接口能正常执行&#xff0c;这…

七牛云成功保存但无法显示和访问{“error“:“download token not specified“}

在使用七牛云存储图片时&#xff0c;前端通过链接访问图片时遇到错误&#xff1a; {"error":"download token not specified"} 具体表现为&#xff1a; 后端通过 access_key 和 secret_key 生成了上传和下载的 Token。前端将域名与 res.key 拼接后生成图…