当前位置: 首页 > 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...

PCL2社区版:打造个性化Minecraft启动器的终极指南

PCL2社区版&#xff1a;打造个性化Minecraft启动器的终极指南 【免费下载链接】PCL-CE PCL2 社区版&#xff0c;可体验上游暂未合并的功能 项目地址: https://gitcode.com/gh_mirrors/pc/PCL-CE 想要完全掌控你的Minecraft游戏体验吗&#xff1f;PCL2社区版&#xff08;…...

springboot-vue基于web的天气预报气候研究系统

目录系统架构设计技术栈选择功能模块划分数据库设计接口设计规范前端实现要点后端实现要点部署方案扩展性考虑测试计划项目时间规划注意事项项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统架构设计 采用前后端分离架构&am…...

Go gRPC 双向流通信实例

Go gRPC双向流通信实例解析 在现代分布式系统中&#xff0c;高效的双向通信是核心需求之一。gRPC作为Google开源的高性能RPC框架&#xff0c;支持双向流通信模式&#xff0c;允许客户端和服务端同时发送和接收多条消息。本文将以Go语言为例&#xff0c;介绍gRPC双向流通信的实…...

Rustup工具链管理深度解析:多版本Rust环境实战指南

Rustup工具链管理深度解析&#xff1a;多版本Rust环境实战指南 【免费下载链接】rustup The Rust toolchain installer 项目地址: https://gitcode.com/gh_mirrors/ru/rustup Rustup作为Rust语言的官方工具链管理器&#xff0c;为开发者提供了稳定、测试版和夜间版多版本…...

OpCore-Simplify:让黑苹果配置从专业难题变为点击操作,3步完成自动化EFI构建

OpCore-Simplify&#xff1a;让黑苹果配置从专业难题变为点击操作&#xff0c;3步完成自动化EFI构建 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你…...

SeqGPT-560M部署避坑:常见‘加载中’卡顿、端口冲突、GPU未识别解决

SeqGPT-560M部署避坑&#xff1a;常见‘加载中’卡顿、端口冲突、GPU未识别解决 1. 模型简介与核心价值 SeqGPT-560M是阿里达摩院推出的零样本文本理解模型&#xff0c;这个560M参数量的轻量级模型专门针对中文场景优化&#xff0c;无需训练就能直接处理文本分类和信息抽取任…...

OpenClaw本地搜索引擎:GLM-4.7-Flash优化个人文件检索

OpenClaw本地搜索引擎&#xff1a;GLM-4.7-Flash优化个人文件检索 1. 为什么需要智能化的本地文件搜索 作为一个长期被文件管理困扰的技术写作者&#xff0c;我的MacBook里堆积着超过2万份文档——技术笔记、项目草稿、参考资料、会议记录杂乱地分布在各个角落。传统的文件名…...

【信号处理实战】从原理到代码:手把手实现三次样条插值

1. 三次样条插值&#xff1a;从数学定义到生活场景 想象你正在用一根柔软的弹性尺子连接一组图钉&#xff0c;这些图钉固定在木板上代表你的数据点。这根尺子需要光滑地穿过每一个图钉&#xff0c;同时保持自然的弯曲形态——这就是三次样条插值要解决的问题。作为信号处理中最…...

终极指南:如何使用Divinity Mod Manager轻松管理《神界:原罪2》模组

终极指南&#xff1a;如何使用Divinity Mod Manager轻松管理《神界&#xff1a;原罪2》模组 【免费下载链接】DivinityModManager A mod manager for Divinity: Original Sin - Definitive Edition. 项目地址: https://gitcode.com/gh_mirrors/di/DivinityModManager 如…...

爱享素材下载器:跨平台资源下载的终极解决方案

爱享素材下载器&#xff1a;跨平台资源下载的终极解决方案 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.com/GitHub…...