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

Dinky 字段模式演变 PIPELINE 同步MySQL到Doris

背景 用Dinky数据平台 FlinkCDC收集Mysql BinLog 至 Doris 搭建实时数仓

问题 用Dinky CDCSOURCE 字段模式演变 整库同步Mysql到Doris 字段新增删除不生效

组件信息

Flink 1.17
FlinkCDC 3.1
dinky 1.1
Doris 2.1.6
Mysql 8.0

Dinky MySQLCDC 整库到 Doris需要的依赖

Flink/lib 和 dinky/extends 目录下放置
Doris 的 Flink connector jar和 MySQL CDC 的 Flink connector jar
有前三个依赖就可以完成dinky到doris的整库同步 但是字段新增删除不会生效 下面三个依赖用在flinkcdc pipeline方式的同步 下面也会截图Flink/lib 和 dinky/extends 完整的所有依赖flink-sql-connector-mysql-cdc-3.1.0.jar
flink-doris-connector-1.17-1.6.0.jar
mysql-connector-java-8.0.27.jar
flink-cdc-pipeline-connector-doris-3.1.0.jar
flink-cdc-pipeline-connector-mysql-3.1.0.jar
flink-cdc-dist-3.1.0.jar 这个包需要自己重新编译下 参考问题四

在这里插入图片描述

在这里插入图片描述

FlinkCDC PIPELINE 样例

这个是基础的单表 整库修改tables 参考flinkcdc3.0+ 官网 还有更多Route和transform功能大家都可以去看下
Route模块提供了表名映射的能力。通过为每一个源表中的数据设置其写入的目标表,通过一对一以及多对一的映射配置,我们能够实现整库同步和简单的分库分表同步功能
简单来说 就是整库同步的时候可以自定义库名 因为Dlink的CDCSOURCE做整库的同步的时候 库表名需要与源库相同 这快感觉相当于做了个补充 挺好的

transform 就是数据转换 应该是可以在Sink之前 对数据做一些基础的转换处理
哈哈哈哈哈 理解的比较浅显 没有去试过这个功能 有不对的地方 请大家多多指教 下面会列举一些过程中遇到的问题 也请教了dinky官方人员 感谢dinky官网的帮助

EXECUTE PIPELINE WITHYAML (
source:type: mysqlhostname: 152.136.51.49port: 3306username: rootpassword: 'xx-12345'tables: test.teachersserver-id: 5400-5404sink:type: dorisfenodes: 152.136.51.49:8030username: rootpassword: '123456'table.create.properties.light_schema_change: truetable.create.properties.replication_num: 1
pipeline:name: Sync MySQL Database to Dorisparallelism: 2
)

问题一 Caused by: org.apache.flink.table.api.ValidationException: The MySQL server has a timezone offset (0 seconds ahead of UTC) which does not match the configured timezone Asia/Shanghai. Specify the right server-time-zone to avoid inconsistencies for time-related fields.

其实就是Mysql时区的问题 在 my.cnf中添加default-time-zone=‘+08:00’ 然后重启Mysql就可以了
不要直接 SET GLOBAl time_zone = ‘Asia/Shanghai’; 重启之后不会生效
查看下 时区是东八区就可以了

     SHOW GLOBAL VARIABLES LIKE 'time_zone';

在这里插入图片描述

问题二 ERROR org.dinky.trans.ddl.CreateCDCSourceOperation 197 execute - connection disabled org.dinky.data.exception.BusException: connection disabled

这个官方给的回答是 Dinky CDCSOURCE的接口实现较老,在新版本 Doris 上支持可能存在问题 建议使用FlinkCDC的pipeline或者doris连接器内的整库同步脚本 所以后续我走上了FlinkCDC的pipeline的道路

问题三 Caused by: java.lang.ClassNotFoundException: org.apache.flink.cdc.runtime.typeutils.EventTypeInfo.EventTypeInfo

EventTypeInfo这个类是在flink-cdc-dist-3.1.0.jar包里面 我将这个包解压缩时候 是可以看到EventTypeInfo的 但是就感觉很奇怪 根本上的原因就是 flink\lib下面也需要添加pipeline的依赖 当时我只在dlink下面添加了 因为他任务底层实际上走的还是flink 所以我这边猜测dinky可能不需要这个依赖
flink-cdc-pipeline-connector-doris-3.1.0.jar
flink-cdc-pipeline-connector-mysql-3.1.0.ja

问题四 Caused by: java.io.InvalidClassException: org.apache.doris.flink.sink.batch.DorisBatchSink; local class incompatible: stream classdesc serialVersionUID = -1727597565303701005, local class serialVersionUID = -6424802353855033470

原因 flin Doris 连接器版本高了 我原先使用的时flink-doris-connector-1.17-24.0.0.jar的版本 将这个降到 flink-doris-connector-1.17-1.6.0.jar 就可以了

问题四 java.lang.NoSuchMethodError: org.apache.calcite.tools.FrameworkConfig.getTraitDefs()Lorg/apache/flink/calcite/shaded/com/google/common/collect/ImmutableList

这个主要是参考这个博主的 也是我看到dinky 使用flinkcdc pipeline的方式只有一篇文章 才想起来还是记录下 避免后面还有人遇到这种问题
这个看这个博主说是CDC依赖冲突的问题 需要将flink-cdc-dist-3.1.0.jar里面删除一部分依赖 然后重新打包下
博主文章链接

# 解压 flink-cdc-3.1.0-bin.tar.gz
tar -zxvf flink-cdc-3.1.0-bin.tar.gz       
cd flink-cdc-3.1.0/lib/
# 解压jar文件·
jar -xvf flink-cdc-dist-3.1.0.jar
# 删除冲突包
rm -rf org/apache/calcite
# 重新打包
jar -cvf  flink-cdc-dist-3.1.0-new.jar 

自此就大功告成了 Dinky使用FlinkCDC pipeline的方式实现 Mysql到Doris的整库同步 并且可以捕获 表结构变更自动步(Schema Evolution)
在这里插入图片描述

相关文章:

Dinky 字段模式演变 PIPELINE 同步MySQL到Doris

背景 用Dinky数据平台 FlinkCDC收集Mysql BinLog 至 Doris 搭建实时数仓 问题 用Dinky CDCSOURCE 字段模式演变 整库同步Mysql到Doris 字段新增删除不生效 组件信息 Flink 1.17 FlinkCDC 3.1 dinky 1.1 Doris 2.1.6 Mysql 8.0Dinky MySQLCDC 整库到 Doris需要的依赖 Flink/…...

【Docker】Harbor 私有仓库和管理

目录 一、搭建本地私有仓库 二、harbor简介(特性、构成、架构的数据流向) 2.1 什么是Harbor 2.2 Harbor的特性 2.3 Harbor的构成 2.4 Harbor的工作原理(运行流程) 三、harbor部署以及配置文件 1. 部署 Docker-Compose 服…...

《重置MobaXterm密码并连接Linux虚拟机的完整操作指南》

目录 引言 一、双击MobaXterm_Personal_24.2进入,但是忘记密码。 那么接下来请跟着我操作。 二、点击此链接,重设密码。 三、下载完成后,现在把这个exe文件解压。注意解压要与MobaXterm_Personal_24.2.exe在同一目录下哦,不然…...

每天五分钟深度学习:逻辑回归和神经网络

本文重点 我们要开启深度学习的基础神经网络的学习进程了,但是在开启之前,我们先来回忆一下逻辑回归算法 逻辑回归 逻辑回归的前向传播公式为: 求出预测值a之后,进而求损失 以上就是逻辑回归模型,相信大家已经不是很陌生了,现在我们要学习神经网络了 神经网络和逻辑回…...

深度学习——线性神经网络(五、图像分类数据集——Fashion-MNIST数据集)

目录 5.1 读取数据集5.2 读取小批量5.3 整合所有组件 MNIST数据集是图像分类中广泛使用的数据集之一,但是作为基准数据集过于简单,在本小节将使用类似但更复杂的Fashion-MNIST数据集。 import torch import torchvision from torch.utils import data fr…...

音频声音怎么调大?将音频声音调大的几个简单方法

音频声音怎么调大?在现代生活中,音频内容无处不在,从在线课程和播客到音乐和电影,音频已经成为我们获取信息和娱乐的重要方式。然而,许多人在使用音频时可能会遇到一个常见问题:音频声音太小,无…...

C#的委托

方法一 private void button1_Click(object sender, EventArgs e) {// 启动后台线程 Thread backgroundThread new Thread(new ThreadStart(DoWork));backgroundThread.Start(); }private void DoWork() {// 模拟后台工作 Thread.Sleep(2000); // 等待2秒以模拟工作 // 更…...

软考(网工)——局域网和城域网

文章目录 🕐局域网基础1️⃣局域网和城域网体系架构 IEEE(负责链路层)2️⃣局域网拓扑结构 🕑CSMA/CD1️⃣CSMA/CD2️⃣CSMA/CD三种监听算法3️⃣冲突检测原理 🕒二进制指数退避算法1️⃣ 二进制指数退避算法 &#x1…...

MySQL 9从入门到性能优化-通用查询日志

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...

解码专业术语——应用系统开发项目中的专业词汇解读

文章目录 引言站点设置管理具体要求包括: Footer管理基于URL的权限控制利用数据连接池优化数据库操作什么是数据连接池?优化的优势 利用反射改造后端代码,AJAX反射的作用及其在后端代码中的应用AJAX 实现前后端无刷新交互 引言 创新实践项目二…...

高级java每日一道面试题-2024年10月18日-JVM篇-说下你对G1垃圾收集器的理解?

如果有遗漏,评论区告诉我进行补充 面试官: 说下你对G1垃圾收集器的理解? 我回答: 在Java高级面试中,G1垃圾收集器是一个经常被提及的话题。以下是对G1垃圾收集器的详细解析: G1垃圾收集器的概述 G1(Garbage-First)垃圾收集器…...

2024系统架构师---湖仓一体架构论文知识点

湖仓一体架构深度解析:构建企业级数据管理与分析的新基石 在当今数据驱动的时代,企业对于数据的管理与分析需求日益复杂。传统的数据仓库与数据湖架构虽各有优势,但单独使用时往往难以满足企业的全面需求。湖仓一体(Lakehouse&am…...

Unity性能优化

前言 当游戏开发使用传统的OPP(面向对象编程)面对大量的Game object时FPS会显著降低,而使用Dots(面向数据编程)性能依旧很好 计算机内存基础 CPU自身有三级高速缓存,L1,L2,L3,其中CPU访问(L1…...

MyHdfs代码分享

关于hdfs协议层相关的的解析已经比较全面,但是大多的分析停留在理论层面。为此笔者通过对hadoop源码的整理,完成了myhdfs项目。此项目有个特点是不依赖于任何hadoop的maven包,但却可以作为原生的hadoop客户端的server。项目暂时已经完成了rpc…...

Java网络编程-简单的API调用

Get请求 - 无参数 安装依赖库 首先需要安装一个库&#xff1a; Okhttp3&#xff0c;这是一个非常流行的 HTTP 库&#xff0c;可以简单、快速的实现 HTTP 调用。 安装 Okhttp3 的方式是在 pom.xml 文件中增加依赖&#xff1a; <!-- https://mvnrepository.com/artifact/c…...

论文笔记(五十)Segmentation-driven 6D Object Pose Estimation

Segmentation-driven 6D Object Pose Estimation 文章概括摘要1. 引言2. 相关工作3. 方法3.1 网络架构3.2 分割流3.3 回归流3.4 推理策略 4. 实验4.1 评估 Occluded-LINEMOD4.1.1 与最先进技术的比较4.1.2 不同融合策略的比较4.1.3 与人体姿态方法的比较 4.2 在YCB-Video上的评…...

微服务的一些基本概念

目录 1 概述1.1 微服务架构的特征1.2 微服务架构示例 2 微服务与单体式架构2.1 什么是单体式架构&#xff1f;2.2 单体式架构的优点2.3 单体式架构的缺点 3 什么是微服务&#xff1f;3.1 微服务的优点3.2 微服务的缺点 4 如何构建微服务4.1 从单体式开始4.2 以正确的方式组织团…...

el-table修改指定列字体颜色 ,覆盖划过行的高亮显示文字颜色

修改指定列字体颜色 ,覆盖划过行的高亮显示文字颜色 代码如下&#xff1a; <div class"c1"><el-table:data"tableData"striperow-class-name"custom-table-row"style"width:100%"cell-mouse-enter"lightFn"cell-…...

java高频面试题汇总

Java 基础 Java 中的序列化和反序列化是什么&#xff1f; 序列化是将 Java 对象转换为字节流的过程&#xff0c;以便可以将其存储在文件中或通过网络进行传输。反序列化则是将字节流恢复为 Java 对象的过程。通过实现 Serializable 接口&#xff0c;Java 对象可以支持序列化。…...

Docker安装ocserv教程(效果极佳)

本章教程,介绍如何在Debain系统上安装ocserv。安装方式是使用Docker方式部署。 一、安装Docker curl -sSL https://file.ewbang.com/docker/debian/install_docker.sh -o install_docker.sh && bash install_docker.sh二、拉取镜像 docker pull tommylau/ocserv...

Wechat2RSS:微信公众号转RSS订阅工具

文章目录Wechat2RSS&#xff1a;微信公众号转RSS订阅工具Wechat2RSS&#xff1a;微信公众号转RSS订阅工具 ttttmr开源的Wechat2RSS项目&#xff0c;目前在GitHub上获得1409颗Star&#xff0c;项目地址为https://github.com/ttttmr/Wechat2RSS。该工具的核心作用是将微信公众号…...

pan-baidu-download:百度网盘多线程下载加速器架构解析与性能优化指南

pan-baidu-download&#xff1a;百度网盘多线程下载加速器架构解析与性能优化指南 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download pan-baidu-download是一款基于Python开发的百度网盘命令行下载…...

别急着扔!12年老ThinkPad X230升级SSD和内存后,Win10流畅得像新电脑

12年老ThinkPad X230重生指南&#xff1a;极简升级打造流畅办公利器每次打开抽屉看到那台积灰的ThinkPad X230&#xff0c;总有种说不出的情感。这款2012年问世的经典商务本&#xff0c;曾陪伴无数人度过加班到凌晨的夜晚。如今性能确实有些力不从心&#xff0c;但直接丢弃又觉…...

企业内统一API网关与Taotoken聚合平台对接方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业内统一API网关与Taotoken聚合平台对接方案 在推进AI应用落地的过程中&#xff0c;许多中大型企业面临一个共同挑战&#xff1a…...

【数据结构与算法】数据结构基础——栈和队列

目录栈和队列1. 栈1.1 栈的概念1.2 栈的实现方式分析1.3 栈的实现1.3.1 栈的初始化与销毁1.3.2 入栈与出栈1.3.3 栈的判空与有效元素个数1.3.4 栈顶元素1.4 栈的扩展1.4.1 两栈共享空间2. 队列2.1 队列的概念2.2 队列的实现方式分析2.3 队列的实现2.3.1 队列的初始化与销毁2.3.…...

Vue2-Verify:解决前端验证码安全性与用户体验平衡问题的技术方案实现

Vue2-Verify&#xff1a;解决前端验证码安全性与用户体验平衡问题的技术方案实现 【免费下载链接】vue2-verify vue的验证码插件 项目地址: https://gitcode.com/gh_mirrors/vu/vue2-verify 在当今Web应用开发中&#xff0c;验证码作为防止自动化攻击的关键安全组件&…...

学习日志(三)【php语法学习,iscc校赛wp】

1. 任务 1.1.1.1.1.1. 知识部分 rce看【之前的笔记&#xff1f;】php的知识点学习继续jwt token好像是比赛的题目考察内容&#xff0c;我看看php伪协议 1.1.1.1.1.2. 题目 参加iscc比赛【五一】rce题目 1.1.1.1.1.3. 环境配置 把vscode搞好&#xff0c;上学期没有把Php配…...

内存申请和使用的场景分析(以AP->kernal->ISP为例)

在 ISP&#xff08;Image Signal Processor&#xff09;系统中&#xff0c;AP 与 ISP 之间的内存交互本质上是一个**“AP 申请可 DMA 访问的共享内存 → 内核建立映射 → 硬件寻址读写 → 同步与回收”**的过程。下面按数据流分层详细拆解。一、ISP 内存需求的特殊性 与普通应用…...

PrediPrune:机器学习驱动的编译器超级优化候选剪枝策略

1. 项目概述与核心挑战在编译器优化的世界里&#xff0c;我们总在追求极致的性能。传统的编译器优化器&#xff0c;比如LLVM的Pass&#xff0c;依赖于一系列预定义的、经过验证的转换规则。它们很高效&#xff0c;但想象力也受限于这些规则。超级优化器&#xff08;Superoptimi…...

DeepSeek代码审查配置避坑清单:12个被99%团队忽略的关键参数(含生产环境校验脚本)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek代码审查功能概览 DeepSeek 提供的代码审查&#xff08;Code Review&#xff09;能力基于其大语言模型对编程语义、安全规范与工程实践的深度理解&#xff0c;支持多语言静态分析、漏洞识别、可…...