MRS Loader+Hudi将MySQL表快速同步成Hudi表最佳实践

举报
peanut-adam 发表于 2022/01/14 19:10:05 2022/01/14
【摘要】 生产场景中客户有许多存量的关系数据库表,随着数据分析需求的增长在使用数据湖架构时往往需要将历史存量数据从关系型数据库中导入数据湖,Hudi是一种数据湖的存储格式,在Hadoop文件系统之上提供了更新数据和删除数据的能力以及消费变化数据的能力,Loader是MRS提供的一个数据迁移工具,本文主要提供了一个使用Loader+Hudi将MySQL表快速同步成Hudi表的案例。

1.概述

生产场景中客户有许多存量的关系数据库表,随着数据分析需求的增长在使用数据湖架构时往往需要将历史存量数据从关系型数据库中导入数据湖,Hudi是一种数据湖的存储格式,在Hadoop文件系统之上提供了更新数据和删除数据的能力以及消费变化数据的能力,Loader是MRS提供的一个数据迁移工具,本文主要提供了一个使用Loader+Hudi将MySQL表快速同步成Hudi表的案例。


2.方案设计

整体流程如下图所示,首先我们通过Loader建立连接访问MySQL数据库,然后建立同步Job并启动任务进行同步作业将数据同步到HDFS上,作业完成后提交一个写入Hudi的Spark作业,将HDFS上同步完成的数据转换为Hudi表从而完成整个任务。


该方案价值在于用户可以使用极少的手工操作即可完成原始关系数据库到数据湖中Hudi表的转换工作。

3.使用方式


3.1前提条件


首先确保MRS集群有安装Spark、Loader、HDFS、Hive等必要组件且已经获得有相应组件权限的用户。

其次确保Loader已加载所需数据库驱动,配置好认证规则。(具体请参考产品文档)






第三我们需要准备一张mysql的表,我们就用下面这张表为示例,字段类型与数据如下图所示



3.2 编辑配置文件


我们需要编辑table.conf文件来设置连接信息如图所示



上图中有一个tarns 文件,这个文件是给loader用来设置同步指定字段的配置文件,该文件为json格式,需要实现设置好需要同步的字段,可以命名为table.json,我们在附件的样例中使用了较为常用的数据类型,供大家参考。
其中要注意的是,Loader 同步Hive时对于date类型的字段有兼容性问题,因此对于date类型的字段建议填写为timestamp类型来规避。


3.3执行同步任务

配置好后,将properties.conf,test.py,pyhudi.py文件放到同一文件夹mysql-to-hdfs.json放到配置文件中写的地方。
source client/bigdata_env 
source client/Hudi/component_env 
kinit 有权限的用户
python3 loader2hudi.py testloader.conf

等待同步任务完成



登录Hive beeline即可查看同步后的数据
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。