SeaTunnel是一个分布式、高性能、易扩展、用于海量数据同步和转化的数据集成平台。可以实现MySQL、Oracle、SQLServer、Postgresql、MongoDB、Db2、Redis等各种异构数据源之间稳定高效的数据同步功能。用户只需要配置作业信息,就能完成数据的同步。提交作业后,源连接器负责并行读取数据并将数据发送到下游转换或直接发送到接收器,接收器将数据写入目标。
SeaTunnle的特点:
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的数据同步流程。