新闻详情

新闻详情

首页 / 资讯中心 / 详情

[基础架构] [Flink] Flink/Flink-CDC代码实现业务接入

发布时间:2026/11/5 14:18:00来源:尧图网络
[基础架构] [Flink] Flink/Flink-CDC代码实现业务接入
简介DataStream 和 FlinkSQL 方式的对比DataStream 在 Flink1.12 和 1.13 都可以用而 FlinkSQL 只能在 Flink1.13 使用。DataStream 可以同时监控多库多表而 FlinkSQL 只能监控单表。方法 / 步骤一进行编码1.1 导入相关依赖dependenciesdependencygroupIdorg.apache.flink/groupIdartifactIdflink-java/artifactIdversion1.12.0/version/dependencydependencygroupIdorg.apache.flink/groupIdartifactIdflink-streaming-java_2.12/artifactIdversion1.12.0/version/dependencydependencygroupIdorg.apache.flink/groupIdartifactIdflink-clients_2.12/artifactIdversion1.12.0/version/dependencydependencygroupIdorg.apache.hadoop/groupIdartifactIdhadoop-client/artifactIdversion3.1.3/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.49/version/dependencydependencygroupIdorg.apache.flink/groupIdartifactIdflink-table-planner-blink_2.12/artifactIdversion1.12.0/version/dependencydependencygroupIdcom.ververica/groupIdartifactIdflink-connector-mysql-cdc/artifactIdversion2.0.0/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.75/version/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupId!-- 可以将依赖打到jar包中 --artifactIdmaven-assembly-plugin/artifactIdversion3.0.0/versionconfigurationdescriptorRefsdescriptorRefjar-with-dependencies/descriptorRef/descriptorRefs/configurationexecutionsexecutionidmake-assembly/idphasepackage/phasegoalsgoalsingle/goal/goals/execution/executions/plugin/plugins/build1.2 业务编码1.2.1 入口类importcom.ververica.cdc.connectors.mysql.MySqlSource;importcom.ververica.cdc.connectors.mysql.table.StartupOptions;importcom.ververica.cdc.debezium.DebeziumSourceFunction;importorg.apache.flink.streaming.api.CheckpointingMode;importorg.apache.flink.streaming.api.datastream.DataStreamSource;importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;/** * Description: * * author: YangGC */publicclassFlinkCDC2{publicstaticvoidmain(String[]args)throwsException{//1.获取Flink 执行环境StreamExecutionEnvironmentenvStreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(1);//1.1 开启 Checkpointenv.enableCheckpointing(5000);env.getCheckpointConfig().setCheckpointTimeout(10000);env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);env.getCheckpointConfig().setMaxConcurrentCheckpoints(1);//// env.setStateBackend(new FsStateBackend(hdfs://hadoop102:8020/cdc-test/ck));//2.通过FlinkCDC构建SourceFunctionDebeziumSourceFunctionStringsourceFunctionMySqlSource.Stringbuilder().hostname(192.168.1.220).port(3308).username(root).password(useradmin)//flinkcdc 下面的所有表.databaseList(flinkcdc.*)// .tableList(flinkcdc.user_info)//使用自定义的反序列化器.deserializer(newCustomerDeserializationSchema()).startupOptions(StartupOptions.initial()).build();DataStreamSourceStringdataStreamSourceenv.addSource(sourceFunction);//3.数据打印dataStreamSource.print();//4.启动任务env.execute(FlinkCDC2);}}1.2.2 自定义反序列化器importcom.alibaba.fastjson.JSONObject;importcom.ververica.cdc.debezium.DebeziumDeserializationSchema;importio.debezium.data.Envelope;importorg.apache.flink.api.common.typeinfo.BasicTypeInfo;importorg.apache.flink.api.common.typeinfo.TypeInformation;importorg.apache.flink.util.Collector;importorg.apache.kafka.connect.data.Field;importorg.apache.kafka.connect.data.Schema;importorg.apache.kafka.connect.data.Struct;importorg.apache.kafka.connect.source.SourceRecord;importjava.util.List;/** * 自定义反序列化器 * Description: * * author: YangGC */publicclassCustomerDeserializationSchemaimplementsDebeziumDeserializationSchemaString{/** * { * db:, * tableName:, * before:{id:1001,name:...}, * after:{id:1001,name:...}, * op: * } */Overridepublicvoiddeserialize(SourceRecordsourceRecord,CollectorStringcollector)throwsException{//创建JSON对象用于封装结果数据JSONObjectresultnewJSONObject();//获取库名表名StringtopicsourceRecord.topic();String[]fieldstopic.split(\\.);result.put(db,fields[1]);result.put(tableName,fields[2]);//获取before数据Structvalue(Struct)sourceRecord.value();Structbeforevalue.getStruct(before);JSONObjectbeforeJsonnewJSONObject();if(before!null){//获取列信息Schemaschemabefore.schema();ListFieldfieldListschema.fields();for(Fieldfield:fieldList){beforeJson.put(field.name(),before.get(field));}}result.put(before,beforeJson);//获取after数据Structaftervalue.getStruct(after);JSONObjectafterJsonnewJSONObject();if(after!null){//获取列信息Schemaschemaafter.schema();ListFieldfieldListschema.fields();for(Fieldfield:fieldList){afterJson.put(field.name(),after.get(field));}}result.put(after,afterJson);//获取操作类型Envelope.OperationoperationEnvelope.operationFor(sourceRecord);result.put(op,operation);//输出数据collector.collect(result.toJSONString());}OverridepublicTypeInformationStringgetProducedType(){returnBasicTypeInfo.STRING_TYPE_INFO;}1.3 业务打包打包完成二Flink 作业到任务面板2.1 通过命令行添加任务把cdc-connector-1.0-SNAPSHOT-jar-with-dependencies.jar 包上传到 到flink主目录并运行下面命令行# 主要是配置入口类 指定flink的运行地址bin/flink run-m127.0.0.1:8081-ccom.yanggc.cdc.FlinkCDC2 ./cdc-connector-1.0-SNAPSHOT-jar-with-dependencies.jar作业面板查看job正在运行查看业务进行正常监控输出2.2 上传Jar包进行任务添加添加相关参数和命令行启动相关效果, 正常成功启动进行监控参考资料 致谢[1] flink-cdc-connectors
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/4 22:55:41

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/5 4:24:57

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/5 4:24:57

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉