使用场景
将指定Hive表中的数据通过写SQL或者数据表同步的方式同步到指定Mysql表中。
注意事项
- MySQL数据源可在“数据源管理”中进行配置。
- 对于清除式写入,Mysql表需要有datetime字段(类型可参考页面“分区格式”说明),用来标识每天的分区。
新建任务
- 在任务开发首页,点击“新建任务”
- 在项目下,左侧目录结构中,右键新建任务

任务设置

数据源信息
同步方式:代码同步,通过写SQL代码实现;数据表同步,选择源表,直接同步
目标信息
- 数据源来源:分为自定义数据源和CDC数据源
- 数据源名称:数据源管理中注册的数据源
- 数据库:数据源所属的仓库名;
- 数据表:数据源所属的表名;
- 一级分区设置:设置分区字段和格式
- 数据保存天数:0代表永久
字段信息
- 数据表同步模式下:选择源或目标表后,点击自动添加可以查看源和目标的字段信息,代码模式下,输入SQL代码后,可解析字段信息,可以移动字段顺序或删除字段
- 字段为一一映射关系,即将源表字段信息,同步到同一行的目标字段信息中
TTL 清理
任务实例启动后,首先会按照用户配置的TTL参数删除过期数据,默认TTL为0,也即永久有效
数据库写入方式
- 清除式写入: 需要有时间分区字段,写入时,若时间分区已存在,清除已有时间分区数据,再进行写入
- 覆盖式写入: 不需要时间分区字段,写入时,不清除数据,按照唯一键upsert,用新的数据覆盖旧数据。当写入出现duplicate key的时候,会进行on duplicate key update操作,来更新字段。另外注意分库分表不支持更新分片键,需要配置job.writer.shard_key参数,value为分片键,多个分片键以逗号分隔
动态分区
- 和Hive中动态分区概念类似,将多天的数据写入到Mysql的多个分区中
- 具体实现,将上游数据中动态分区字段的值视为Mysql的分区,其中Mysql在写入分区数据前,会先清理该分区内容,然后将相同分区的记录写入到Mysql的同一个分区中
常见问题
- 覆盖式写入时,写入Mysql的数据比Hive查出来的数据少
- 根据Mysql表唯一键,检查Hive查出来的数据,是否有重复。
- 注意Mysql表的类型和Hive类型是否匹配,如果整数溢出或者字符长度不够Mysql会自动截断,也可能导致数据重复
数据处理高级参数设置(非必选)
- job.writer.delete_threshold: 限制JDBC一次删除数据的阈值,默认为10000
- job.writer.delete_interval_ms:限制JDBC每次删除数据的间隔,单位为ms,默认为100
- job.writer.shard_key:分库分表写入时,需要配置分片键,多个字段以逗号分隔,例如“id,item_id”