目录
三、基于 Catalog 与 Job Scheduler 的数据自动同步
一、Job Scheduler
Job Scheduler是Apache Doris 在 2.1 版本中引入的新功能,是一种基于预设计划运行的任务管理系统,能够在特定时间点或按照指定时间间隔触发预定义操作,实现任务的自动化执行。
Job Scheduler 具备以下特点:
- 高效调度:Job Scheduler 可以在指定的时间间隔内安排任务和事件,确保数据处理的高效性。采用时间轮算法保证事件能够精准做到秒级触发。
- 灵活调度:Job Scheduler 提供了多种调度选项,如按 分、小时、天或周的间隔进行调度,同时支持一次性调度以及循环(周期)事件调度,并且周期调度也可以指定开始时间、结束时间。
- 事件池和高性能处理队列:Job Scheduler 采用 Disruptor 实现高性能的生产消费者模型,最大可能的避免任务执行过载。
- 调度记录可追溯:Job Scheduler 会存储最新的 Task 执行记录(可配置),通过简单的命令即可查看任务执行记录,确保过程可追溯。
- 高可用:依托于 Doris 自身的高可用机制,Job Schedule 可以很轻松的做到自恢复、高可用。
1.1 创建-JOB
CREATE
JOB
job_name
ON SCHEDULE schedule
[COMMENT 'string']
DO sql_body;
- 关键字 CREATE JOB 加上作业名称,它在一个 db 中标识唯一事件。 JOB 名称必须是全局唯一的,如果已经存在同名的 JOB,则会报错。
- ON SCHEDULE 子句,它指定了 Job 作业的类型和触发时间以及频率。
AT timestamp:格式:'YYYY-MM-DD HH:MM:SS', 用于一次性事件,它指定事件仅在 给定的日期和时间执行一次 timestamp,当执行完成后,JOB 状态会变更为 FINISHED。
EVERY:表示定期重复操作,它指定了作业的执行频率,关键字后面要指定一个时间间隔,该时间间隔可以是天、小时、分钟、秒、周。例如: 1 DAY 表示每天执行一次, 1 HOUR 表示每小时执行一次, 1 MINUTE 表示每分钟执行一次, 1 WEEK 表示每周执行一次。
- DO 子句,它指定了 Job 作业触发时需要执行的操作, 即一条 SQL 语句。目前仅支持 INSERT 内表 操作。
1.2 暂停-JOB
PAUSE JOB WHERE jobname= 'jobname';
暂停一个正在 RUNNING 状态的 JOB ,正在运行的 TASK 会被中断,JOB 状态变更为 PAUSED。 被停止的 JOB 可以通过 RESUME 操作恢复运行。使用此命令需要 ADMIN 权限。
1.3 恢复-JOB
RESUME JOB where jobName = jobName;
将处于 PAUSED 状态的 JOB 恢复为 RUNNING 状态。RUNNING 状态的 JOB 将会根据既定的调度周期去执行。
1.4 删除-JOB
DROP JOB where jobName='jobname';
删除一个 JOB 作业。作业会被立即停止同时删除。
1.5 查询-JOB
通过任务临时表jobs,可以查看某个任务类型中的job信息,job类型支持:insert(insert into 类型的任务)和mv(物化视图类型的任务)。
select * from jobs("type"="insert") where Name='one_insert_job';
-- 查看jobs 表结构
-- desc function jobs("type"="insert");
1.6 查询-TASKS
通过 tasks 临时表,可以查看当前 doris 集群中的 job 产生的 tasks 信息,job类型支持:insert(insert into 类型的任务)和mv(物化视图类型的任务)。
select * from tasks("type"="insert") where JobName='one_insert_job';
-- 查看tasks 表结构
-- desc function tasks("type"="insert");
二、Multi Catalog
多源数据目录(Multi-Catalog)功能,旨在能够更方便对接外部数据目录,以增强Doris的数据湖分析和联邦数据查询能力。
具体操作可参考:Doris:多源数据目录(Multi-Catalog)_doris catalog-CSDN博客
三、基于 Catalog 与 Job Scheduler 的数据自动同步
3.1 创建 Doris 表
3.2 创建MySQL Catalog
CREATE CATALOG mysql PROPERTIES (
"type"="jdbc",
"user"="root",
"password"="secret",
"jdbc_url" = "jdbc:mysql://example.net:3306",
"driver_url" = "mysql-connector-j-8.3.0.jar",
"driver_class" = "com.mysql.cj.jdbc.Driver"
)
3.3 创建周期调度任务同步数据
CREATE JOB schedule_load
ON SCHEDULE EVERY 1 DAY
DO
INSERT INTO doris_table FROM SELECT * FROM mysql_catalog.db_name.tablen_name where create_time >= days_add(now(),-1)
444

被折叠的 条评论
为什么被折叠?



