Doris:基于 Catalog 与 Job Scheduler 的数据自动同步

目录

一、Job Scheduler

1.1 创建-JOB

1.2 暂停-JOB

1.3 恢复-JOB

1.4 删除-JOB

1.5 查询-JOB

1.6 查询-TASKS

二、Multi Catalog

三、基于 Catalog 与 Job Scheduler 的数据自动同步

3.1 创建 Doris 表

3.2 创建MySQL Catalog

3.3 创建周期调度任务同步数据


一、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 表

Doris:数据表设计_doris 建表-CSDN博客

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_37559973

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值