使用Apache Doris自动同步整个 MySQL/Oracle 数据库进行数据分析

news2024/10/3 6:33:13

Flink-Doris-Connector 1.4.0 允许用户一步将包含数千个表的整个数据库(MySQL或Oracle )摄取到Apache Doris(一种实时分析数据库)中。

通过内置的Flink CDC,连接器可以直接将上游源的表模式和数据同步到Apache Doris,这意味着用户不再需要编写DataStream程序或在Doris中预先创建映射表。

当 Flink 作业启动时,Connector 会自动检查源数据库和 Apache Doris 之间的数据等效性。如果数据源包含 Doris 中不存在的表,Connector 会自动在 Doris 中创建相同的表,并利用 Flink 的侧输出来方便一次摄取多个表;如果源中发生架构更改,它将自动获取 DDL 语句并在 Doris 中进行相同的架构更改。
 

一、快速开始

  • 对于MySQL:

下载 JAR 文件:https://github.com/apache/doris-flink-connector/releases/tag/1.4.0


行家:

<dependency>
 <groupId>org.apache.doris</groupId>
 <artifactId>flink-doris-connector-1.15</artifactId>
 <!--artifactId>flink-doris-connector-1.16</artifactId-->
 <!--artifactId>flink-doris-connector-1.17</artifactId-->
 <version>1.4.0</version>
</dependency>
  • 对于Oracle:

下载 JAR 文件:
Flink 1.15:http://justtmp-bj-1308700295.cos.ap-beijing.myqcloud.com/oracle/flink-doris-connector-1.15-1.5.0-SNAPSHOT.jar
Flink 1.16:http://justtmp-bj-1308700295.cos.ap-beijing.myqcloud.com/oracle/flink-doris-connector-1.16-1.5.0-SNAPSHOT.jar
Flink 1.17:http://justtmp-bj-1308700295.cos.ap-beijing.myqcloud.com/oracle/flink-doris-connector-1.17-1.5.0-SNAPSHOT.jar


如何使用它

例如,要将整个 MySQL 数据库引入mysql_dbDoris(MySQL 表名以tbl或test开头),只需执行以下命令(无需提前在Doris 中创建表):

<FLINK_HOME>/bin/flink run \
   -Dexecution.checkpointing.interval=10s \
   -Dparallelism.default=1 \
   -c org.apache.doris.flink.tools.cdc.CdcTools \
  lib/flink-doris-connector-1.16-1.4.0.jar \
  mysql-sync-database \
   --database test_db \
   --mysql-conf hostname=127.0.0.1 \
   --mysql-conf username=root \
   --mysql-conf password=123456 \
   --mysql-conf database-name=mysql_db \
   --including-tables "tbl|test.*" \
   --sink-conf fenodes=127.0.0.1:8030 \
   --sink-conf username=root \
   --sink-conf password=123456 \
   --sink-conf jdbc-url=jdbc:mysql://127.0.0.1:9030 \
   --sink-conf sink.label-prefix=label1 \
   --table-conf replication_num=1

摄取Oracle数据库:请参考示例代码(https://github.com/apache/doris-flink-connector/pull/156)。


表现如何

当涉及到同步整个数据库(包含数百甚至数千个活动或不活动的表)时,大多数用户希望在几秒钟内完成。因此我们测试了连接器,看看它是否符合要求:

  • 1000 个 MySQL 表,每个表有 100 个字段。所有表都是活动的(这意味着它们不断更新,每次数据写入涉及一百多行)

  • Flink作业检查点:10s

经过压力测试,系统表现出较高的稳定性,主要指标如下:

根据早期采用者的反馈,该Connector在生产环境中的万表数据库同步中也提供了高性能和系统稳定性。这证明Apache Doris和Flink CDC的结合能够高效可靠地进行大规模数据同步。

二、它如何使数据工程师受益

工程师不再需要担心表创建或表模式维护,从而节省了数天繁琐且容易出错的工作。之前在Flink CDC中,需要为每个表创建一个Flink作业,并在源端建立日志解析链路,但现在通过全库摄取,源数据库的资源消耗大大减少。也是增量更新和全量更新的统一解决方案。

其他特性

1、连接维度表和事实表

常见的做法是将维度表放在Doris中,通过Flink的实时流进行Join查询。Flink-Doris-Connector 1.4.0基于Flink 的 Async I/O实现了异步 Lookup Join,因此 Flink 实时流不会因为查询而阻塞。此外,连接器还允许您将多个查询合并为一个大查询,并将其立即发送给 Doris 进行处理。这提高了此类连接查询的效率和吞吐量。

2、节俭 SDK

我们在 Connector 中引入了 Thrift-Service SDK,用户不再需要使用 Thrift 插件或在编译时配置 Thrift 环境。这使得编译过程变得更加简单。

3、按需流加载

数据同步过程中,当没有新的数据摄入时,不会发出Stream Load请求。这样可以避免不必要的集群资源消耗。

4、后端节点轮询

对于数据摄取,Doris 调用前端节点获取后端节点列表,并随机选择一个发起摄取请求。该后端节点将是协调器。Flink-Doris-Connector 1.4.0 允许用户启用轮询机制,即在每个Flink 检查点都有不同的后端节点作为 Coordinator,以避免单个后端节点长期承受过大的压力。

5、支持更多数据类型

除了常见的数据类型外,Flink-Doris-Connector 1.4.0 还支持 Doris 中的 DecimalV3/DateV2/DateTimev2/Array/JSON。


三、用法示例

可以通过DataStream或FlinkSQL(有界流)从Doris读取数据。支持谓词下推。

CREATE TABLE flink_doris_source (
   name STRING,
   age INT,
   score DECIMAL(5,2)
  ) 
   WITH (
     'connector' = 'doris',
     'fenodes' = '127.0.0.1:8030',
     'table.identifier' = 'database.table',
     'username' = 'root',
     'password' = 'password',
     'doris.filter.query' = 'age=18'
);
​
SELECT * FROM flink_doris_source;


连接维度表和事实表:

CREATE TABLE fact_table (
 `id` BIGINT,
 `name` STRING,
 `city` STRING,
 `process_time` as proctime()
) WITH (
 'connector' = 'kafka',
...
);
​
create table dim_city(
 `city` STRING,
 `level` INT ,
 `province` STRING,
 `country` STRING
) WITH (
 'connector' = 'doris',
 'fenodes' = '127.0.0.1:8030',
 'jdbc-url' = 'jdbc:mysql://127.0.0.1:9030',
 'lookup.jdbc.async' = 'true',
 'table.identifier' = 'dim.dim_city',
 'username' = 'root',
 'password' = ''
);
​
SELECT a.id, a.name, a.city, c.province, c.country,c.level 
FROM fact_table a
LEFT JOIN dim_city FOR SYSTEM_TIME AS OF a.process_time AS c
ON a.city = c.city


写入Apache Doris:

CREATE TABLE doris_sink (
   name STRING,
   age INT,
   score DECIMAL(5,2)
  ) 
   WITH (
     'connector' = 'doris',
     'fenodes' = '127.0.0.1:8030',
     'table.identifier' = 'database.table',
     'username' = 'root',
     'password' = '',
     'sink.label-prefix' = 'doris_label',
     //json write in
     'sink.properties.format' = 'json',
     'sink.properties.read_json_by_line' = 'true'
);

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

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

相关文章

Nature揭示记忆与食欲的大脑连接与肥胖风险相关

根据最新研究&#xff0c;调节记忆的大脑回路和调节食欲的大脑回路间的连接中断程度与体重指数&#xff08;BMI&#xff09;成正比&#xff0c;这在患有导致肥胖的紊乱或暴饮暴食行为比如暴食症&#xff08;BED&#xff09;的患者中关联更显著。该研究指出&#xff0c;肥胖者的…

华为mate60 上线 媒介盒子多家媒体报道

为什么你的品牌营销不见效&#xff1f;如何能推动品牌破圈&#xff1f;让媒介盒子给你一些启发。本期盒子要跟大家分享地新机上市&#xff0c;数码科技行业企业该如何做线上宣传。 HUAWEI Mate 60系列8月29日官宣发布&#xff0c;出色的拍照功能、强大的性能表现和持久的续航能…

OpenCL编程指南-10.1C++包装器API

C包装器API概述 CAPI划分为多个类&#xff0c;分别映射到一个OpenCL C类型&#xff0c;例如&#xff0c;cl::Memory类就映射到OpenCL C中的cl_mem。不过&#xff0c;C API会尽可能使用继承提供额外的一层类型抽象&#xff1b;例如&#xff0c;类cl::Buffer派生自基类cl::Memor…

短视频转化率是什么意思,怎么计算,多少算正常?

短视频转化率是指在短视频平台上&#xff0c;观看短视频的用户中&#xff0c;实际进行某种转化行为的比例。转化行为可以是各种具体行动&#xff0c;例如点击链接、访问网站、购买产品等。 一、短视频转化率怎么算&#xff0c;计算公式是什么&#xff1f; 短视频转化率的计算…

Shell命令操作Linux文件系统

Shell命令操作Linux文件系统 文件夹介绍 文件夹常规命令 文件夹权限控制⭐ 文件类型和权限 修改文件权限 移动、复制、删除文件夹 文件夹介绍 Linux文件系统是计算机操作系统中的一个关键组成部分&#xff0c;它用于管理和组织计算机上的数据和信息。先到根目录&#xf…

开学什么牌子的电容笔比较好?便宜好用的触控笔

苹果原装的电容笔和国内的平替电容笔最大的不同之处&#xff0c;就是平替电容笔只有一个倾斜压感功能&#xff0c;而不是像苹果原装的电容笔一样&#xff0c;同时具有着倾斜压感功能与重力压感功能。不过&#xff0c;如果你很少用电容笔作画&#xff0c;那么你也不用选择昂贵的…

【2023集创赛】国家集创中心杯全国二等奖:运算放大器

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;国家集创中心杯二等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电…

OpenCV(二十六):边缘检测(二)

目录 1.Laplacian算子边缘检测 原理&#xff1a; Laplacian边缘检测函数Laplacian() 示例代码&#xff1a; 2.Canny算子边缘检测 原理&#xff1a; Canny算法函数Canny() 示例代码&#xff1a; 1.Laplacian算子边缘检测 原理&#xff1a; Laplacian算子的原理基于图像…

IAST百科全书第16期:IAST与RASP的区别

Hello 大家好&#xff0c;欢迎来到新一期IAST百科全书&#xff0c;之前有同学提问IAST和RASP是不是非常类似&#xff0c;今天就专门给大家展开讲讲。 如果说SAST是从“内部”测试应用程序&#xff0c;DAST是从“外部”测试&#xff0c;那IAST就是“从内到外”进行测试&#xf…

伪静态web.config常见规则写法与参数介绍说明

伪静态web.config常见规则写法与参数介绍说明. 示例1&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <configuration><system.webServer><rewrite><rules><rule name"规则 1" stopProcessing"tru…

python Playwright优化页面等待和处理异步操作

在使用 Playwright 进行页面自动化时&#xff0c;优化页面等待和处理异步操作是非常重要的&#xff0c;可以提高脚本的稳定性和执行效率。 优化页面等待和处理异步操作的建议 **1. 使用正确的等待条件&#xff1a;**Playwright 提供了多种等待条件&#xff0c;如等待元素出现…

对时序数据进行分类与聚类

我在最近的工作中遇到了一个问题&#xff0c;问题是我需要根据银行账户在一定时间内的使用信息对该账户在未来的一段时间是否会被销户进行预测。这是一个双元值的分类问题&#xff0c;只有两种可能&#xff0c;即会被销户和不会被销户。针对这个问题一般来说有两种解决策略。 …

Python学习 -- logging模块

logging 模块是 Python 中用于记录日志的标准库&#xff0c;它提供了丰富的功能&#xff0c;可以帮助开发者进行日志记录和管理。以下是关于logging模块的详细使用方式&#xff0c;包括日志级别、处理流程、Logger 类、Handler 类、Filter 类、Formatter 类以及模块中常用函数等…

H5移动端便捷兼容测试方式

一、准备&#xff1a; 1、谷歌浏览器 2、H链接 3、主流设备分辨率、尺寸 二、步骤&#xff1a; 1、打开F12&#xff0c;选择手机模式 2、看顶部设备信息&#xff0c;点击&#xff0c;县级弹窗最底部的edit进入编辑模式 3、添加想要测试的设备&#xff0c;设备的宽高需要按照…

Linux下的系统编程——认识进程(七)

前言&#xff1a; 程序是指储存在外部存储(如硬盘)的一个可执行文件, 而进程是指处于执行期间的程序, 进程包括 代码段(text section) 和 数据段(data section), 除了代码段和数据段外, 进程一般还包含打开的文件, 要处理的信号和CPU上下文等等.下面让我们开始对Linux进程有个…

数学建模篇---2022国赛C题(二)(全程python,完整论文和代码可取!)

接着上回我们继续第三题 问题 3 对附件表单 3 中未知类别玻璃文物的化学成分进行分析&#xff0c;鉴别其所属类型&#xff0c;并对 分类结果的敏感性进行分析。 我们的分析&#xff1a; 基于问题二的分类模型&#xff0c;计算出每个待测样本点与簇中心的平方欧式距离&#xff0…

Windows 10以后的版本默认不会启用SMBv1

文章目录 SMBv1的历史故事SMBv1 仍然可以在未预装的版本重新安装检查计算机是否启用SMBv11&#xff0c;Server端检测SMBv1是否启用2&#xff0c;客户端检测SMBv1是否启用 Windows 如何禁用SMBv11&#xff0c;Server端用powershell禁用&#xff1a;2&#xff0c;客户端禁用方法&…

链条输送机如何润滑

润滑是使用机械设备过程中不可或缺的保养工作&#xff0c;链条输送机也不例外&#xff0c;但对于第一次使用链条机的用户来讲&#xff0c;对于哪个部位需要润和以及如何润滑都是一头雾水&#xff0c;今天艾讯就从专业的角度来和您分享一下链条输送机如何润滑的问题。 1、应切断…

vue3 自动导入图片配置

1 npm i vite-plugin-vue-images -D 2 vite.configts.ts 文件中配置 import { defineConfig } from vite import ViteImages from vite-plugin-vue-images export default defineConfig({ //插件中导入指定图片存放的目录 plugins: [ ViteImages({ dirs: [src/assets] }) ] …

霍尔效应的本质

霍尔效应是电磁效应的一种&#xff0c;这一现象是美国物理学家霍尔&#xff08;E.H.Hall&#xff0c;1855—1938&#xff09;于1879年在研究金属的导电机制时发现的。 当电流垂直于外磁场通过半导体时&#xff0c;载流子发生偏转&#xff0c;垂直于电流和磁场的方向会产生一附加…