当前位置: 首页 > news >正文

Flink Connector 开发

Flink Streaming Connector

Flink是新一代流批统一的计算引擎,它需要从不同的第三方存储引擎中把数据读过来,进行处理,然后再写出到另外的存储引擎中。Connector的作用就相当于一个连接器,连接Flink计算引擎跟外界存储系统。Flink里有以下几种方式,当然也不限于这几种方式可以跟外界进行数据交换:
【1】Flink里面预定义了一些sourcesink
【2】Flink内部也提供了一些Boundled connectors
【3】可以使用第三方Apache Bahir项目中提供的连接器;
【4】是通过异步IO方式;

预定义的 source 和 sink

Flink里预定义了一部分sourcesink。在这里分了几类。
[点击并拖拽以移动] ​

基于文件的 source 和 sink

如果要从文本文件中读取数据,可以直接使用:

env.readTextFile(path)

就可以以文本的形式读取该文件中的内容。当然也可以使用:根据指定的fileInputFormat格式读取文件中的内容。

env.readFile(fileInputFormat, path)

如果数据在Flink内进行了一系列的计算,想把结果写出到文件里,也可以直接使用内部预定义的一些sink,比如将结果已文本或csv格式写出到文件中,可以使用DataStreamwriteAsText(path)DataSetwriteAsCsv(path)

基于 Socket 的 Source 和 Sink

提供 Sockethost nameport,可以直接用StreamExecutionEnvironment预定的接口socketTextStream创建基于Socketsource,从该 socket中以文本的形式读取数据。当然如果想把结果写出到另外一个Socket,也可以直接调用DataStream writeToSocket

//从 socket 中读取数据流
env.socketTextStream("localhost",777);
//输出至 socket 
resultDataStream.writeToSocket("hadoop1",6666,new SimpleStringSchema())

基于内存 Collections、Iterators 的 Source

可以直接基于内存中的集合或者迭代器,调用StreamExecutionEnvironment fromCollectionfromElements构建相应的source。结果数据也可以直接printprintToError的方式写出到标准输出或标准错误。详细也可以参考Flink源码中提供的一些相对应的Examples来查看异常预定义 sourcesink的使用方法,例如WordCountSocketWindowWordCount

//从Java.util.Collection集合中读取数据作为数据源
ArrayList<String> list = new ArrayList<>(5);
list.add("flink");
list.add("scala");
list.add("spark");
list.add("hadoop");
list.add("hive");
env.fromCollection(list).print();//从Java.util.Collection集合中读取数据作为数据源env.fromElements("flink", "scala", "spark", "hadoop", "hive").print();

Bundled Connectors

Flink里已经提供了一些绑定的Connector,例如kafka sourcesinkEs sink等。读写kafkaesrabbitMQ时可以直接使用相应 connectorapi即可。

虽然该部分是Flink项目源代码里的一部分,但是真正意义上不算作Flink引擎相关逻辑,并且该部分没有打包在二进制的发布包里面。所以在提交Job时候需要注意,job代码jar包中一定要将相应的connetor相关类打包进去,否则在提交作业时就会失败,提示找不到相应的类,或初始化某些类异常。
[点击并拖拽以移动] ​

Apache Bahir 中的连接器

Apache Bahir最初是从Apache Spark中独立出来项目提供,以提供不限于Spark相关的扩展 / 插件、连接器和其他可插入组件的实现。通过提供多样化的流连接器streaming connectorsSQL数据源扩展分析平台的覆盖面。如有需要写到flumeredis的需求的话,可以使用该项目提供的connector
[点击并拖拽以移动] ​

Async I/O

流计算中经常需要与外部存储系统交互,比如需要关联MySQL中的某个表。一般来说,如果用同步I/O的方式,会造成系统中出现大的等待时间,影响吞吐和延迟。为了解决这个问题,异步I/O可以并发处理多个请求,提高吞吐,减少延迟。Async的原理可参考官方文档
[点击并拖拽以移动] ​

相关文章:

Flink Connector 开发

Flink Streaming Connector Flink是新一代流批统一的计算引擎&#xff0c;它需要从不同的第三方存储引擎中把数据读过来&#xff0c;进行处理&#xff0c;然后再写出到另外的存储引擎中。Connector的作用就相当于一个连接器&#xff0c;连接Flink计算引擎跟外界存储系统。Flin…...

Golang leetcode707 设计链表 (链表大成)

文章目录 设计链表 Leetcode707不使用头节点使用头节点 推荐** 设计链表 Leetcode707 题目要求我们通过实现几个方法来完成对链表的各个操作 由于在go语言中都为值传递&#xff0c;&#xff08;注意这里与值类型、引用类型的而区别&#xff09;&#xff0c;所以即使我们直接在…...

Django和Vue项目运行过程中遇到的问题及解决办法

这是我从CSDN上边买来的一个系统的资源&#xff0c;准备在此基础上改成自己的系统&#xff0c;但是在运行项目这一步上都把自己难为了好几天&#xff0c;经过不断的摸索&#xff0c;终于完成了第一步&#xff01;&#xff01;&#xff01; 如果大家也遇到同样的问题&#xff0…...

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network 论文背景人群密度方法过去的发展历史早期方法基于轨迹聚类的方法基于特征回归的方法基于图像的方法 Multi-column CNN用于人群计数基于密度图的人群计数通过几何自适应核生成密度图密度图估计的多列…...

el-cascader隐藏某一级的勾选框及vue报错Error in callback for watcher “options“的解决办法

今天用到饿了么的级联选择器时出现了这个报错Error in callback for watcher “options“: “TypeError: Cannot read propertie ‘level‘ of null,因为需求是在不同类型 el-cascader多选的时候默认是可以勾选所有级的选项的,如下图: 包含级联cascader的options、select的…...

2024美赛数学建模思路A题B题C题D题E题F题思路汇总 选题分析

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间&#xff1a;北京时间2024年2月2日&#xff08;周五&#xff…...

C++ 常用设计模式

一、工厂模式 from&#xff1a;C开发常用的设计模式及其实现详解 - 知乎 摘抄&#xff1a; 简单工厂、工厂、抽象工厂&#xff1a; 简单工厂需要工厂内部判断&#xff0c;而工厂模式不需要修改工厂类&#xff1a; 抽象工厂&#xff1a; 接上图&#xff1a; 未完待续.........

高性价比的高速吹风机/高速风筒解决方案,基于普冉单片机开发

高速吹风机是近些年非常火的一款产品&#xff0c;快速崛起并颠覆了传统吹风机&#xff0c;高速吹风机也成为了传统吹风机替代的一个大趋势。高速吹风机是利用高转速产生的大风量来快速吹干头发&#xff0c;由于其精巧的外观设计、超低的噪声、出色的干发效果&#xff0c;高速吹…...

toRefs的用法

文章目录 toRefs是什么toRefs的作用以及为什么要用它&#xff1f; toRefs是什么 toRefs 是 Vue 3 Composition API 中的一个函数&#xff0c;它用于将响应式对象转换为普通对象&#xff0c;其中对象的每个属性都是 ref 对象。这是因为在 Vue 3 中&#xff0c;reactive 创建的对…...

MySQL基础篇(三)约束

一、概述 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的&#xff1a;保证数据库中数据的正确、有效性和完整性。 分类&#xff1a; 注意&#xff1a;约束是作用于表中字段上的&#xff0c;可以在创建表/修改表的时候添加约束。 二…...

Java进阶 1-2 枚举

目录 常量特定方法 职责链模式的枚举实现 状态机模式的枚举实现 多路分发 1、使用枚举类型实现分发 2、使用常量特定方法实现分发 3、使用EnumMap实现分发 4、使用二维数组实现分发 本笔记参考自&#xff1a; 《On Java 中文版》 常量特定方法 在Java中&#xff0c;我们…...

一个人最大的内驱力是什么?

1、不因为孤独或外界压力而降低「生活标准“」的能力。 ”因为寂寞去约炮“、“因为家里催婚匆忙结婚“、”因为没谈过恋爱随便找个人交往。 “你的每一次选择都是在为自己想要的世界而投的票&#xff0c;往后余生是幸福还是悲剧&#xff0c;就是在这一次次 的将就与坚持死磕中…...

解决方法:公众号的API上传素材报错40005

公众号的API上传素材报错40005 Error uploading file : {"errcode":40005,"errmsg":"invalid file type hint: [YOkxGA0122w487] rid: 223442-323247e7bd5-5d75322d88"}上传错误原因分析&#xff1a; 之前成功的示例&#xff0c;文件名为"…...

音量控制软件sound control mac功能亮点

sound control mac可以帮助用户控制某个独立应用程序的音量&#xff0c;通过每应用音量&#xff0c;均衡器&#xff0c;平衡和音频路由独立控制每个应用的音频&#xff0c;还有整个系统的音量。 sound control mac功能亮点 每个应用程序的音量控制 独立控制应用的数量。 键盘音…...

Spring Boot 生产就绪中文文档-下

本文为官方文档直译版本。原文链接 由于篇幅较长&#xff0c;遂分两篇。上半部分中文文档 Spring Boot 生产就绪中文文档-下 度量标准入门受支持的监控系统AppOpticsAtlasDatadogDynatracev2 API自动配置手动配置 v1 API (旧版)与版本无关的设置 ElasticGangliaGraphiteHumioIn…...

DS|树结构及应用

题目一&#xff1a;DS树 -- 树的先根遍历&#xff08;双亲转先序&#xff09; 题目描述&#xff1a; 给出一棵树的双亲表示法结果&#xff0c;用一个二维数组表示&#xff0c;位置下标从0开始&#xff0c;如果双亲位置为-1则表示该结点为根结点 编写程序&#xff0c;输出该树…...

Java 读取超大excel文件

注意&#xff1a;此参考解决方案只是针对xlsx格式的excel文件&#xff01; Maven <dependency><groupId>com.monitorjbl</groupId><artifactId>xlsx-streamer</artifactId><version>2.2.0</version> </dependency>读取方式1…...

K8S中的job和CronJob

Job 介绍 Kubernetes jobs主要是针对短时和批量的工作负载。它是为了结束而运行的&#xff0c;而不是像deployment、replicasets、replication controllers和DaemonSets等其他对象那样持续运行。 示例 apiVersion: batch/v1 kind: Job metadata:name: pispec:template:spec:r…...

中国文化文物和旅游统计年鉴,数据含pdf、excel等格式,文本形式呈现,可预览数据

基本信息. 数据名称: 中国旅游统计年鉴 数据格式: pdf、xls不定 数据时间: 2012-2020年 数据几何类型: 文本 数据坐标系: —— 数据来源&#xff1a;文化和旅游部、网络公开数据 原名为《中国旅游统计年鉴》2020年后更名为《中国文化文物和旅游统计年鉴》&#xff…...

Java版企业电子招标采购系统源码——鸿鹄电子招投标系统的技术特点

在数字化时代&#xff0c;采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…...

基于Twilio与ChatGPT构建AI电话助手:架构设计与实战指南

1. 项目概述&#xff1a;当ChatGPT遇上实体电话最近在折腾一个挺有意思的玩意儿&#xff0c;叫“ChatGPT-phone”。这名字听起来有点科幻&#xff0c;但说白了&#xff0c;它的核心目标就是让一个AI语音助手&#xff0c;比如ChatGPT&#xff0c;能够像真人一样接听和拨打电话。…...

别再死记硬背截止、放大、饱和了!用Arduino+面包板,5分钟直观理解NPN/PNP三极管三种状态

用Arduino点亮三极管&#xff1a;5分钟可视化实验理解电子开关的三种状态 你是否曾被三极管的"截止"、"放大"、"饱和"这些术语困扰&#xff1f;教科书上的电压公式和载流子运动图虽然精确&#xff0c;却难以形成直观认知。今天我们将用Arduino和…...

DES算法C++实现踩坑实录:S盒置换与比特操作的那些坑

DES算法C实现中的五大典型陷阱与解决方案 在实现DES算法的过程中&#xff0c;许多开发者都会遇到一些看似简单却容易导致加密结果错误的细节问题。本文将聚焦于实际编码中最常见的五个"坑点"&#xff0c;通过具体案例分析和解决方案&#xff0c;帮助开发者快速定位和…...

树莓派4B + MPU9250:从零到一搭建你的第一个姿态传感器(附完整代码与避坑指南)

树莓派4B与MPU9250实战&#xff1a;从硬件连接到姿态解算的全流程指南 1. 准备工作与环境搭建 1.1 硬件清单与连接指南 在开始之前&#xff0c;我们需要准备以下硬件组件&#xff1a; 树莓派4B&#xff08;建议4GB内存版本&#xff09;MPU9250九轴传感器模块杜邦线&#xff08;…...

AI应用开发工程师(Agent方向):AI Agent开发工程师高薪入行指南,掌握核心技能,成为企业AI大脑!

在 AI 领域&#xff0c;AI Agent&#xff08;智能体&#xff09; 正在成为最热门的方向之一。从 智能客服 到 自动化办公助手&#xff0c;再到 企业知识管理&#xff0c;AI Agent 正在改变人与机器的交互方式。那么&#xff0c;AI 应用开发工程师&#xff08;Agent方向&#xf…...

别再乱用STOP模式了!STM32L4三种STOP模式深度对比与选型实战

STM32L4低功耗设计实战&#xff1a;STOP模式选型与能效优化全解析 在物联网终端设备与便携式仪器开发中&#xff0c;每微安电流的节省都直接关系到产品的市场竞争力。最近为一个农业传感器项目做方案评审时&#xff0c;发现团队在STOP模式选择上存在严重误区——工程师们习惯性…...

二分查找算法:选择开区间还是闭区间?

如大家所熟悉的&#xff0c;在二分查找算法的实现过程中&#xff0c;通常会选择左闭右开区间 [st, ed) 或是全闭区间 [st, ed] 这两种搜索区间的表示方式。左闭右开区间比较符合大家的编程习惯&#xff0c;而全闭区间在解决某些问题上更加方便。首先看一下不同区间的选择对 主循…...

嵌入式系统功耗测量实战:从基础原理到精准优化

1. 功耗测量&#xff1a;从概念到实践的核心挑战 在电子设计领域&#xff0c;无论你面对的是指尖大小的可穿戴设备&#xff0c;还是驱动工厂产线的重型电机&#xff0c;功耗都是一个绕不开的核心议题。我们常说的“功耗”&#xff0c;本质上是一个系统在单位时间内消耗的能量。…...

3种方法修复ROG游戏本色彩配置文件丢失问题:G-Helper实战指南

3种方法修复ROG游戏本色彩配置文件丢失问题&#xff1a;G-Helper实战指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…...

从零上手泰凌微TLSR8269:SIG Mesh SDK文件架构与编译环境搭建保姆级指南

泰凌微TLSR8269 SIG Mesh开发实战&#xff1a;从SDK解析到环境搭建全攻略 第一次打开泰凌微TLSR8269的SIG Mesh SDK时&#xff0c;面对密密麻麻的文件夹和文件&#xff0c;不少开发者都会感到无从下手。proj、proj_lib、vendor这些目录到底存放着什么&#xff1f;如何快速搭建起…...