Mysql数据实时导入Hive

本文介绍了如何通过解析Mysql的Binlog并利用阿里开源的Canal工具,实现实时将Mysql数据增量导入到Hive中,以解决全量导入耗时长、时效性低和无法在导入期间操作Hive的问题。文中详细阐述了方案的优势、挑战,如Hive无主键导致的记录查找问题,并提出了将Hive的事务ID存储在Hbase中以提高性能的解决方案。
摘要由CSDN通过智能技术生成

Mysql数据实时导入Hive

背景

目前,我公司大数据团队,使用的数据仓库是Hive。
客户端开发团队,使用的数据库是Mysql,客户端上的各种数据都存储在了Mysql中。
每天凌晨,大数据团队会批量把Mysql从库的全部数据导入Hive。
此方案存在的问题是:

  1. 每天全量导入数据耗时较长,且对集群消耗较大。
  2. Hive中数据每天更新一次,时效性较低。
  3. 在批量导入过程中,不能对Hive进行任何操作。

需要解决的问题是:

弃用全量导数据的方式,采用增量导数据。
Hive中数据要近实时更新,包括Mysql表中的增删改数据。
导数据过程中,可以对Hive进行各种操作,且保证数据的一致性。
已有的解决方案及不足:

使用Sqoop,依据Mysql表每条记录中的修改时间戳字段,进行增量导入。
上述解决方案的优势是,简单,易操作,不需要使用新的组件。
Oracle等公司有针对数据库之间数据同步的成套解决方案,包括Mysql到Hive的增量数据导入。
方案1的不足是:

  1. 需要Mysql表中有修改时间戳字段。
  2. 增量导入,不能做到近实时性。
    方案2的不足是:
  3. 需要购买Oracle公司的整套解决方案,费用昂贵。
  4. 解决方案不是开源的,维护起来比较困难。

解决方案

Mysql的Binlog日志,记录了Mysql表的增删改查日志。
使用阿里开源的Canal工具,可以实时获取和解析Mysql的Binlog日志。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值