Mysql同步数据到Doris的踩坑过程

问题背景

由于项目需要,需要把多个Mysql数据库的数据同步到Doris数据库,然后利用Doris强调的计算和查询能力,来满足业务需求。有关Doris可以查看它的官方文档来了解它。

seatunnel的使用到放弃

缘起

从《第十届GIAC全球互联网架构大会》了解到在etl工具领域出了一个新的由国人开发的工具——Seatunnel,看PPT介绍是比阿里的Datax还好用的数据同步工具,以下图片来自大会PPT《白鲸开源 代立冬-基于 Apache SeaTunnel 实现超高性能数据同步.pdf》

从这个PPT文档上面来看,支持的数据源比其他三款多,单机性能比最快的DataX还快20%-50%,以及社区很活跃等等,那肯定果断使用Apache SeaTunnel来做数据同步是最好的选择了。

使用

于是我开始进入SeaTunnel的官网,开始学习,粗略看了下,好像确实强大和简单,于是开始着手部署到测试环境去验证,下载最新版本(当时是2.3.2),在测试Mysql同步到Doris时,马上就遇到了一个坑:

org.apache.seatunnel.shade.com.typesafe.config.Config这个类找不到

在社区群请教大佬,大佬说让我用dev分支试试,于是我下载dev最新的代码,本地打包去部署,这里又有坑,因为Seatunnel里面有依赖一些在maven官方库没有的包,所以有些包需要自己下载,但没有找到相关文档说明,咨询大佬才知道,给了我这个文章参考,成为 Seatunnel 源码贡献者保姆级教程

按照这个文档操作之后,顺利打包,然后去部署,可以正常同步数据了。很开心~

在测试环境测试1000万数据用了999s,平均10673条/s,速度还是相当不错的。

 但是立马又发现问题,有时候能正常跑完,有时候又会报错,提示:

1.ErrorCode:[Doris-01], ErrorDescription:[stream load error]

2.ErrorCode:[Doris-01], ErrorDescription:[stream load error] - Load status is Label Already Exists and load job finished, change you label prefix or restore from latest savepoint!

3.Please increase checkpoint timeout in the seatunnel.yaml

这里面1,2是doris那边Stream load出问题了,应该是seatunnel生成的lable prefix和之前提交的又重复,倒是提交不成功,属于是seatunnel生成策略问题,3这个就很迷,对seatunnel提交数据到doris的时机和控制不是很了解,官网也没有一个很清楚的说明,如果表数据量很大,很容易checkpoint一直卡着,然后超时,配置了split分片后也会,不知道如何解决好。并且在生产(数据量更大)测试的时候,有时候发现读不到数据,都是0

有时候任务信息显示的写入数量,在doris去查询对不上,相差很远。

缘落

由于遇到了很多奇奇怪怪的问题,而又不知道应该怎么查找问题,怎么解决问题,搞的就很烦了,可能工具本身是很好的工具,只是我使用的问题,很有可能是各种参数配置的问题,但是这里又没有一个最佳实践案例给参考,在官网上参数说明也很简单,对应技术大佬或者从事etl工具开发者来说可能看到这些说明就基本明白怎么样去调优,但是对于我这个小白来说,完全不知道要怎么办,于是打算放弃使用Seatunnel了,或许它很好,或许它未来会更好,等到它更加成熟我再来使用它吧,暂时再见了~

好用的datax

由于无法使用好Seatunnel,于是打算使用datax来同步,因为Doris用的也是Mysql的连接协议,我测试一下在datax中使用同步Mysql一样的方式来同步数据到Doris,慢的可怕,只有几百每秒的速度,但确实大数据量也很稳定的同步,但这个速度显然不满足需求。

在Doris官网文档里面发现有相关的生态扩展,见DataX Doriswriter - Apache Doris,下载最新的DataX,发现这个插件已经集成到DataX里面的,于是我使用最新的DataX来测试一下数据同步,直接惊讶到我了,速度达到了惊人的11MB/s,平均21761条/s

这个速度比Seatunnel的速度还要快一杯了,并且很稳定,没有奇奇怪怪的问题,参数设置很明确多少条数据、多大的数据进行写入。

于是乎果断使用上了datax来进行数据同步了。

总结

最新的技术不一定最好用,刚出来还没有经历过大面积的应用,总会有很多奇奇怪怪的Bug,但是新的工具新的技术总是推动着技术的发展和革新,希望Seatunnel未来能做到又快又好用。

在技术实现选择上面还是不能完全听别人的介绍或者百度搜索的资料,还是需要自己实际的去对比一下,有些时候别人的说的不一定对,或者别人的一下测试数据或者理论数据是在不同版本(可能不是发行版)不同环境中得出来的,所以还是需要自己实际进行测试对比,来决定使用什么样的实现方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/130726.html

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

相关文章

《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》全文翻译

《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》- Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 论文信息摘要1. 介绍2. 思维链提示3. 算术推理3.1 实验设置3.2 结果3.3 消融研究3.4 思想链的稳健性 4. 常识推理5. 符号…

win11本地连接没了怎么办

很多用户在使用win11系统时发现自己的网络连接没有了,遇到这种情况的话,我们应该怎么处理呢?我们可以尝试打开网络图标,下面就是小编整理出的教程,大家一起看看吧。 win11本地连接没了怎么办 方法一: 1、…

Python图像融合处理和 ROI 区域绘制基础

文章目录 一、图像融合二、图像 ROI 区域定位三、图像属性3.1 shape3.2 size3.3 dtype四、图像通道分离及合并4.1、split()函数4.2 merge()函数五、图像类型转换一、图像融合 图像融合通常是指多张图像的信息进行融合,从而获得信息更丰富的结果,能够帮助人们观察或计算机处理…

【echarts】如何将iconfont转换成echart所需的path路径 echarts折线图、柱状图如何设置自定义svg图标

步骤 下载iconfont图标到本地,用浏览器打开,右键查看源代码,或者用开发IDE软件打开,找到path d...,这个就是我们要传递给echart的icon的值。 代码示例: legend: {data: data?.map((item) > item.comp…

Java计算机毕业设计基于SpringBoot音乐网项目(附源码讲解)

目录 用户端 第一步:用户注册 第二步:用户登录 第三步:平台首页(可查看平台歌单、歌手详细信息操作等等) 第四步:查看歌单 第五步:歌单详情操作(歌单评价、歌单歌曲下载、歌单…

06-mq

1、消息队列有什么优点和缺点? 优点: 解耦、异步、削峰填谷。 缺点: 系统可用性降低 系统复杂性提高 一致性问题 2、常见消息队列的比较 3、Kafka的特性 1.消息持久化 2.高吞吐量 3.扩展性强(动态)4集群+4台集群…

前端使用H5中draggable实现拖拽排序效果

文章目录 一、实现代码二、实现效果 一、实现代码 <!DOCTYPE html> <style>* {padding: 0;margin: 0;}body {display: flex;width: 100%;height: 100vh;justify-content: center;align-items: center;}.list {display: flex;width: 336px;flex-wrap: wrap}.list-i…

虚拟机Ubuntu操作系统常用终端命令(1)(详细解释+详细演示)

虚拟机Ubuntu操作系统常用终端命令 本篇讲述了Ubuntu操作系统常用的三个功能&#xff0c;即归档&#xff0c;软链接和用户管理方面的相关知识。希望能够得到大家的支持。 文章目录 虚拟机Ubuntu操作系统常用终端命令二、使用步骤1.归档1.1创建档案包1.2还原档案包1.3归档并压缩…

Map和Set及其实现类详解

目录 一, 搜索 1,传统搜索 2,Map和Set模型 二, Map的使用 1,Map接口的继承及实现图 2,Map接口的使用 3,TreeMap和HashMap的使用和对比 1,TreeMap 代码示例 map中插入的数据按照key进行排序 map中插入的数据必须具有可比较性(或者实现了比较器相关接口) ​map中插入…

SSM SpringBoot vue快递柜管理系统

SSM SpringBoot vue快递柜管理系统 系统功能 登录 注册 个人中心 快递员管理 用户信息管理 用户寄件管理 配送信息管理 寄存信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Mybaits)或SpringBoot 前端: vue 数据库&#xff1a;Mys…

【LeetCode-中等题】59. 螺旋矩阵 II

文章目录 题目方法一&#xff1a;二维数组缩圈填数字方法二&#xff1a; 题目 方法一&#xff1a;二维数组缩圈填数字 定义四个边界条件&#xff0c;每转一圈&#xff0c;把数值填进去&#xff0c;然后缩小一圈&#xff0c;直到不满足条件位置 结束循环条件可以是&#xff1a; …

WxJava开发微信登录、微信支付

WxJava开发微信支付、微信登录 前言一、引入依赖二、修改配置文件三、小程序微信登录1.登录流程时序2.认识openid、unionid和code3.代码实现 四、小程序微信支付1.业务流程图2.签名、私钥、证书、敏感信息加解密说明3.代码实现 前言 WxJava是微信Java开发工具包&#xff0c;支…

【HTML专栏4】常用标签(标题、段落、换行、文本格式化、注释及特殊字符)

本文属于HTML/CSS专栏文章&#xff0c;适合WEB前端开发入门学习&#xff0c;详细介绍HTML/CSS如果使用&#xff0c;如果对你有所帮助请一键三连支持&#xff0c;对博主系列文章感兴趣点击下方专栏了解详细。 博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;HTML/CS…

人脸签到系统 pyQT+数据库+深度学习

一、简介 人脸签到系统是一种基于人脸识别技术的自动签到和认证系统。它利用计算机视觉和深度学习算法来检测、识别和验证个体的面部特征&#xff0c;以确定其身份并记录其出现的时间。这个系统通常用于各种场景&#xff0c;包括企业、学校、会议、活动和公共交通等&#xff0c…

10个值得收藏的3D任务角色下载网站

每个人都喜欢免费的东西。 无论是免费的 3D 角色还是游戏资产&#xff0c;我们都喜欢它们。 以下是可以为你的游戏获取免费 3D 角色的前 10 个网站的列表。 你可以将它们用于多种用途&#xff0c;例如 3D 打印或动画剪辑。 如果需要将下载的3D模型转换为其他格式&#xff0c;可…

学生信息系统(python实现)

#codingutf-8 import os.path filenamestudent.txtdef menm():#菜单界面print(学生管理系统)print(-----------------------------功能菜单-----------------------------)print(\t\t\t\t\t\t1.录入学生信息)print(\t\t\t\t\t\t2.查找学生信息)print(\t\t\t\t\t\t3.删除学生信息…

超越代码行数!如何看待Python在大型项目中的真正价值?

在软件开发的世界里&#xff0c;Python是一门备受喜爱的编程语言&#xff0c;它以其简洁、易读和强大的特性而闻名。然而&#xff0c;就像所有备受关注的事物一样&#xff0c;Python也有其争议性话题。其中之一是关于Python在大型项目中的表现。有些人认为Python并不适合处理大…

探索珠宝商城小程序:商家如何实现线上卖珠宝

近期&#xff0c;微信小程序的发展势头强劲&#xff0c;各行各业都在积极开发自己的小程序&#xff0c;以适应这个数字化的时代。珠宝行业也不例外&#xff0c;许多珠宝品牌都已经推出了自己的小程序&#xff0c;为用户提供了更加便捷、个性化的购物体验。因此&#xff0c;制作…

K8s 多集群实践思考和探索

作者&#xff1a;vivo 互联网容器团队 - Zhang Rong 本文主要讲述了一些对于K8s多集群管理的思考&#xff0c;包括为什么需要多集群、多集群的优势以及现有的一些基于Kubernetes衍生出的多集群管理架构实践。 一、为什么需要多集群 随着K8s和云原生技术的快速发展&#xff0c…

error:03000086:digital envelope routines::initialization error

项目背景 前端vue项目启动突然报错error:03000086:digital envelope routines::initialization error 我用的开发工具是vscode&#xff0c;node版本是v18.17.0 前端项目版本如下↓ 具体报错如下↓ 报错原因 node版本过高 解决方法 1输入命令 $env:NODE_OPTIONS"--op…