SeaTunnel是一个分布式、高性能、易扩展、用于海量数据同步和转化的数据集成平台。可以实现MySQL、Oracle、SQLServer、Postgresql、MongoDB、Db2、Redis等各种异构数据源之间稳定高效的数据同步功能。用户只需要配置作业信息,就能完成数据的同步。提交作业后,源连接器负责并行读取数据并将数据发送到下游转换或直接发送到接收器,接收器将数据写入目标。
SeaTunnle的特点:
- **丰富且可扩展的连接器:**SeaTunnle提供了一个不依赖于特定执行引擎的连接器API。基于此API开发的连接器(源、转换、接收器)可以在许多不同的引擎上运行,例如当前支持的SeaTunnle引擎、Flink、Spark。
- **连接器插件:**插件设计允许用户轻松开发自己的连接器并将其集成到SeaTunnle项目中。目前,SeaTunnle已经支持100多个连接器,而且数量还在激增。
- **批量流集成:**基于SeaTunnle连接器API开发的连接器,完美兼容离线同步、实时同步、全同步、增量同步等场景。大大降低了管理数据集成任务的难度。
- **多引擎支持:**SeaTunnle默认使用SeaTunnle引擎进行数据同步。同时,SeaTunnle还支持使用Flink或Spark作为连接器的执行引擎,以适应企业现有的技术组件。SeaTunnle支持多个版本的Spark和Flink。
- **JDBC多路复用,数据库日志多表解析:**SeaTunnle支持多表或全数据库同步,解决了JDBC连接过多的问题;支持多表或全库日志读写解析,解决了CDC多表同步场景重复读取解析日志的问题。
- **高吞吐、低时延:**SeaTunnle支持并行读写,提供稳定可靠的数据同步能力,高吞吐、低时延。
- **完善的实时监控:**SeaTunnle支持数据同步过程中每个步骤的详细监控信息,让用户轻松了解同步任务读写的数据量、数据大小、QPS等信息。
ClickHouse是OLAP 在线分析领域的一颗冉冉新星,它拥有极其出众的查询性能,以及丰富的分析函数,可以助力分析师灵活而迅速地挖掘海量数据的价值。
从Oracle同步数据到ClickHouse,是目前最常见到的数据同步场景,将数据从Oracle同步到ClickHouse可以帮助提升数据处理速度和查询性能,提供更好的数据管理和分析能力,以及降低成本和提高经济效益。
本文将介绍如何借助SeaTunnle实现Oracle数据同步到ClickHouse数仓。
SeaTunnel任务配置及启动
本示例将Oracle的test表中的9999条数据,同步到ClickHouse数据库下default.test0中。
Oracle建表语句,如下:
CREATE TABLE test (ID INT,NAME VARCHAR(40),QUANTITY INT,PRIMARY KEY (ID) );
向Oracle中插入数据,格式如下:
insert into test (ID,NAME,QUANTITY) values(1,'banana',1);
ClickHouse建表语句,如下:
CREATE TABLE default.test0
(
`ID` Int32,
`NAME` String,
`QUANTITY` Int32
)
ENGINE = MergeTree
PRIMARY KEY ID
ORDER BY ID
1、下载jdbc
下载Oracle jdbc并放至 '$SEATNUNNEL_HOME/plugins/jdbc/'目录下
2、编写配置文件
在'$SEATNUNNEL_HOME/config'目录下,新建配置文件
配置文件内容示例如下:
env {
execution.parallelism = 1
job.mode = "BATCH"
}
source{
Jdbc {
url = "jdbc:oracle:thin:@localhost:1539/FREE"
driver = "oracle.jdbc.OracleDriver"
user = "system"
password = "123456"
query = "SELECT * FROM test"
}
}
sink {
Clickhouse {
host = "localhost:8123"
database = "default"
table = "test0"
username = "default"
password = "123456"
}
}
3、启动任务
在'$SEATNUNNEL_HOME'目录下,使用启动命令:
./bin/seatunnel.sh --config ./config/oracletock.template -e local
此命令将以 local (本地模式) 运行您的SeaTunnel作业。
当任务运行完毕,会出现本次任务的汇总信息:
进入ClickHouse,select count() from test0查看写入情况,可以看到9999条测试数据已经写入ClickHouse。
接下来我们将介绍更多数据库到ClickHouse的数据同步流程。