You need to enable JavaScript to run this app.
导航
3.3.2 Hive-MySQL
最近更新时间:2022.09.05 11:25:30首次发布时间:2022.09.05 11:25:30
我的收藏
有用
有用
无用
无用

使用场景

将指定Hive表中的数据通过写SQL或者数据表同步的方式同步到指定Mysql表中。

注意事项

  1. MySQL数据源可在“数据源管理”中进行配置。
  2. 对于清除式写入,Mysql表需要有datetime字段(类型可参考页面“分区格式”说明),用来标识每天的分区。

新建任务

  1. 在任务开发首页,点击“新建任务”
  2. 在项目下,左侧目录结构中,右键新建任务
    alt

任务设置

alt

数据源信息

同步方式:代码同步,通过写SQL代码实现;数据表同步,选择源表,直接同步

目标信息

  1. 数据源来源:分为自定义数据源和CDC数据源
  2. 数据源名称:数据源管理中注册的数据源
  3. 数据库:数据源所属的仓库名;
  4. 数据表:数据源所属的表名;
  5. 一级分区设置:设置分区字段和格式
  6. 数据保存天数:0代表永久

字段信息

  1. 数据表同步模式下:选择源或目标表后,点击自动添加可以查看源和目标的字段信息,代码模式下,输入SQL代码后,可解析字段信息,可以移动字段顺序或删除字段
  2. 字段为一一映射关系,即将源表字段信息,同步到同一行的目标字段信息中

TTL 清理

任务实例启动后,首先会按照用户配置的TTL参数删除过期数据,默认TTL为0,也即永久有效

数据库写入方式

  1. 清除式写入: 需要有时间分区字段,写入时,若时间分区已存在,清除已有时间分区数据,再进行写入
  2. 覆盖式写入: 不需要时间分区字段,写入时,不清除数据,按照唯一键upsert,用新的数据覆盖旧数据。当写入出现duplicate key的时候,会进行on duplicate key update操作,来更新字段。另外注意分库分表不支持更新分片键,需要配置job.writer.shard_key参数,value为分片键,多个分片键以逗号分隔

动态分区

  1. 和Hive中动态分区概念类似,将多天的数据写入到Mysql的多个分区中
  2. 具体实现,将上游数据中动态分区字段的值视为Mysql的分区,其中Mysql在写入分区数据前,会先清理该分区内容,然后将相同分区的记录写入到Mysql的同一个分区中

常见问题

  1. 覆盖式写入时,写入Mysql的数据比Hive查出来的数据少
  2. 根据Mysql表唯一键,检查Hive查出来的数据,是否有重复。
  3. 注意Mysql表的类型和Hive类型是否匹配,如果整数溢出或者字符长度不够Mysql会自动截断,也可能导致数据重复

数据处理高级参数设置(非必选)

  1. job.writer.delete_threshold: 限制JDBC一次删除数据的阈值,默认为10000
  2. job.writer.delete_interval_ms:限制JDBC每次删除数据的间隔,单位为ms,默认为100
  3. job.writer.shard_key:分库分表写入时,需要配置分片键,多个字段以逗号分隔,例如“id,item_id”