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

news2024/11/18 20:48:19

问题背景

由于项目需要,需要把多个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.coloradmin.cn/o/1014593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论如何在Android中还原设计稿中的阴影

每当设计稿上注明需要添加阴影时,Android上总是显得比较棘手,因为Android的阴影实现方式与Web和iOS有所区别。 一般来说阴影通常格式是有: X: 在X轴的偏移度 Y: 在Y轴偏移度 Blur: 阴影的模糊半径 Color: 阴影的颜色 何为阴影 但是在A…

手刻 Deep Learning -第壹章 -PyTorch教学-激励函数与感知机入门(上)

一、前言 本文接续前篇教学 Pytorch 与线性回归 ,本文着重在 Activation Function ( 中文称 激励函数 ),我们会介绍激励函数 (也有人称 激活函数? 激发函数? ) 为什么会有用&#xf…

Python 06 之面向对象基础

😀前言 在日常编程和软件开发中,我们通常会遇到各种各样的问题,其中很多问题都可以通过面向对象的程序设计方法来解决。面向对象编程不仅可以使代码更加组织化和系统化,而且还可以提高代码的重用性和可维护性。 . 在本教程中&…

一个工位的演讲

前几天,知乎官方制作了一个视频,感觉这个视频非常不错,推荐给大家看看。 这个短片很有创意,而且,内容也很丰富。 为什么说这个短片很有创意呢?因为它是从一个工位的角度切入的,所谓铁打的工位&a…

基于matlab实现的电力系统稳定性分析摆幅曲线代码

完整程序: clear; clc; t 0; tf 0; tfl 0.5; tc 0.5; % tc 0.05, 0.125, 0.5 sec for 2.5 cycles, 6.25 cycles & 25 cycles resp ts 0.05; m 2.52 / (180 * 50); i 2; dt 21.64 * pi / 180; ddt 0; time(1) 0; ang(1) 21.64; pm 0.9; pm1 2.44;…

解锁大数据宝藏:使用AI预测未来趋势的新方法

文章目录 大数据的价值传统方法与AI的优势使用AI预测未来趋势的新方法1. 时间序列分析2. 自然语言处理(NLP)3. 预测市场趋势 应用前景与挑战应用前景挑战和限制 结论 🎉欢迎来到AIGC人工智能专栏~解锁大数据宝藏:使用AI预测未来趋…

软件设计师考试学习1

前言 计算机组成原理及体系结构 数据的表示 进制的转换 原码反码补码移码 最高位是符号位,负数符号位为1 反码补码正数和原码一样,负数有区别 反码符号位不动,其他位置取反 补码在反码基础上加1 移码是将补码的符号为取反 在原码和反码中…

Sqlserver如何调试存储过程

前提:需要使用Sql Server Managerment Studio 工具进行调试。 步骤: 1.选择存储过程,右键选择“执行存储过程”。操作过后,会生成一个调用存储过程的代码块。 2.以编辑模式打开所以需要调试的存储过程。 3.点击调试按钮进行调…

k8s集群使用ingress转发grafana服务

文章目录 前言一、思路二、grafana准备1. grafana-configmap.yaml2. grafana.yaml 三、ingress准备1. ingress.yaml2. grafana-externalname.yaml3. ingress-nginx-controller 四、 本机host文件准备五、访问测试 前言 在k8s集群中,使用ingress服务转发grafana的页…

苹果是真牛,数据线的钱要赚,换电池钱也要赚,贪婪成性

iPhone15发布会是苹果当前的热点,发布会结束后苹果又传出了一个消息,进一步提高更换电池的价格,显示出苹果意图进一步割韭菜,提升利润,这就有点贪婪成性了吧? 据了解 iPhone 7、8 及 SE 系列由 528 元涨至 …

商淘云八周年 与实体店业务共发展

引言:商淘云主要从事电商平台、B2B订货系统、供应链管理系统的开发和搭建,目前服务的客户有:中商北斗供应链管理集团有限公司、奥克斯物业、苏州广电总台、中国平安、南方新闻网等。 随着时间的流淌,市场不断发展,商淘…

【多线程案例】阻塞式队列

1. 什么是阻塞式队列 阻塞队列是一种特殊的队列. 也遵守 "先进先出" 的原则. 阻塞队列能是一种线程安全的数据结构, 并且具有以下特性: 当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素. 当队列空的时候, 继续出队列也会阻塞, 直到有其他线程往…

性能工程落地的4个阶段

性能工程按照不同的内容和目的划分为4个阶段,分别是线下单系统压测分析阶段、线下全链路压测分析阶段、生产只读业务压测及容量评估阶段、生产读写业务全链路压测及容量评估阶段。(也可以理解为一个企业性能测试体系的发展阶段) 线下单系统压测分析阶段 针对单系统的性能…

第71步 时间序列建模实战:ARIMA建模(Python)

基于WIN10的64位系统演示 一、写在前面 这一期,我们使用Python进行SARIMA模型的构建。 同样,这里使用这个数据: 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever wi…

LeetCode算法动态规划—剑指 Offer 10- II. 青蛙跳台阶问题

目录 剑指 Offer 10- II. 青蛙跳台阶问题 题解: 代码: 运行结果:​编辑 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97(1000000007&#xff…

实现按钮悬停动画

知识点与技巧 伪元素 使用伪元素来作为按钮悬停效果动画展示的元素 z-index 的使用技巧 使用z-index属性来控制按钮和伪元素的层次关系 transform、transition 复习 使用transform、transition两个属性来实现动画的展示 按钮边框动画 切换效果 核心代码 .btn.btn-border-…

Python语言开发环境安装

视频版教程 Python3零基础7天入门实战视频教程 首先去Python官网下载Python安装包 https://www.python.org/ 目前最新版本:Python 3.11.4 直接点击下载。(建议用迅雷下载,速度快) 双击安装包进行Python安装。 勾选下 Add pytho…

3D生成式AI模型、应用与工具大全

当谈到技术炒作时,人工智能正在超越虚拟世界,吸引世界各地企业和消费者的注意力。 但人工智能可以进一步增强虚拟世界,至少在某种意义上:资产创造。 AI 有潜力扩大用于虚拟环境的 3D 资产的创建。 推荐:用 NSDT编辑器…

二叉树(堆)

堆的性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 大堆:任何父亲≥孩子 小堆:任何父亲≤孩子 接下来,我们要做的便是对堆进行增加和删除: 首先是增加操作&#xff0c…

【算法专题突破】滑动窗口 - 找到字符串中所有字母异位词(14)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:438. 找到字符串中所有字母异位词 - 力扣(Leetcode) 这道题很好理解,就是找出从不同位置开始的所有异位词。 2. 算法原理 那我们该如…