EMR StarRocks实战——Mysql数据实时同步到SR

2024-02-28 12:44

本文主要是介绍EMR StarRocks实战——Mysql数据实时同步到SR,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   文章摘抄阿里云EMR上的StarRocks实践:《基于实时计算Flink使用CTAS&CDAS功能同步MySQL数据至StarRocks》

前言

     CTAS可以实现单表的结构和数据同步,CDAS可以实现整库同步或者同一库中的多表结构和数据同步。下文主要介绍如何使用Flink平台和E-MapReduce StarRocks,通过CTAS&CDAS功能实现实时数仓中TP(Transaction Processing)和AP(Analytical Processing)数据同步的场景。

一、背景信息

  通过CTAS(CREATE TABLE AS)语句可以在StarRocks中自动创建和Mysql中表结构一致的表,并进行数据同步,还能实时同步上游(Schema)的变更到下游表,提高在目标存储中创建表和维护源表结构变更的效率。

 当执行CTAS语句时,Flink会按照以下流程执行:

(1)检查目标存储中是否存在该目标表。

  • 如果不存在,则通过目标端Catalog在目标存储中创建相应的目标表,该目标表具有和数据源相同的Schema
  • 如果不存在,则跳过建表。如果已存在的目标表和源表Schema不一致,则会报错提示。

(2)提交和启动相应的数据同步作业。同步数据源的数据以及Schema的变更到目标表中。

      表结构变更同步策略通过CTAS语句,在实时同步数据的同时,还能同步源表Schema的变更到目标表中。

    Schema变更包括初始表的创建以及未来表的变更。

 1.当前支持同步的Schema变更:

  • 添加可空列:自动在目标表Schema末尾添加对应的列,并自动同步新增列的数据
  • 删除可空列:不会直接在目标表中删除该列,而是将该列的数据自动填充为null值
  • 重命名列:被看做添加列和删除列。直接在目标表中末尾添加重命名后的列,并将重命名前的列数据自动填充为NULL值。例如,如果col_a重命名为col_b,则会在目标表末尾添加col_b,并自动将col_a的数据填充为NULL值。

 2.暂不支持同步的Schema变更:

  • 数据类型的变更:例如由VARCHAR变为BIGINT,由NOT NULL变为NULLABLE属性。
  • 主键或索引等约束的变更
  • 非空列的增加或删除的变更
  • DDL中字段长度的调整

3.注意事项:

  • 如果遇到不支持的Schema变更,则需要您手动删除下游目标表,重新启动CTAS作业,即重新创建目标表并重新同步历史数据。

  • CTAS不会识别具体的DDL类型,而是对比前后两条数据的Schema差异。因此,如果您先删除了某列后,又加回了该列,且这两个DDL之间无数据变化,则CTAS会认为没有发生结构变更。同理,如果您添加了一列,直到该表有数据变化,CTAS才会感知到结构变更,才会同步结构变更到目标表。

  • 通过CTAS建表支持的字段类型信息,见文章:数据类型概述 | StarRocks

二、同步测试

  Mysql数据实时同步到StarRocks(SR)的操作流程,参见文章地址:
基于Flink平台同步MySQL数据至StarRocks_开源大数据平台 E-MapReduce(EMR)-阿里云帮助中心CTAS可以实现单表的结构和数据同步,CDAS可以实现整库同步或者同一库中的多表结构和数据同步。本文为您介绍如何使用实时计算Flink平台和E-MapReduce StarRocks通过CTAS&CDAS功能实现实时数仓中TP(Transaction Processing)和AP(Analytical Processing)数据同步的场景。icon-default.png?t=N7T8https://help.aliyun.com/zh/emr/emr-on-ecs/user-guide/use-the-ctas-and-cdas-statements-of-realtime-compute-for-apache-flink-to-synchronize-data-from-an-apsaradb-rds-for-mysql-instance-to-a-starrocks-cluster?spm=a2c4g.11186623.0.0.4aee4d38LFbGou

  参考文章:

基于Flink平台同步MySQL数据至StarRocks_开源大数据平台 E-MapReduce(EMR)-阿里云帮助中心

这篇关于EMR StarRocks实战——Mysql数据实时同步到SR的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/755545

相关文章

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

MySQL zip安装包配置教程

《MySQLzip安装包配置教程》这篇文章详细介绍了如何使用zip安装包在Windows11上安装MySQL8.0,包括下载、解压、配置环境变量、初始化数据库、安装服务以及更改密码等步骤,感兴趣的朋... 目录mysql zip安装包配置教程1、下载zip安装包:2、安装2.1 解压zip包到安装目录2.2

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实