概述
EasyDataInsight项目
Hive数据表同步到Mysql的实现
一、前提
a)Mysql表名若为M_A,则对应hive表名应为EDI_A,Mysql 临时表名为T_A;
b)M_A字段类型和个数与SELECT * FROM EDI_A一致(包含分区字段),而T_A字段个数与类型是EDI_A中除分区字段以外的字段。
c)执行同步脚本的主机能访问mysql DB server.
二、步骤如下:
检查哪些需要同步过去
a)情况一:从hdfs://edi/edi_conf中取到要导出表对应的最后同步时间last_sync_dt;用该时间在hdfs的该表数据路径下找分区日期在last_sync_dt之后的所有分区,这些分区的数据都是需要同步到mysql的。
i.配置列表
ii.若存在,取得最后一次同步的分区名保存到export_pt
iii.取到需要导出的分区到folder变量
图一
b)情况二:从hdfs://edi/edi_conf中没有取到last_sync_dt,表示从来没同步过该表,所以要同步的数据就是该表在hdfs路径下所有分区。如图一。
2.开始同步
a)循环所有分区的文件列表,每次同步一个分区的数据;
b)读取当前操作hive table需要同步到mysql的分区列表folders,遍历folders;
c)导出一个分区
i.第一步:取到需要导出的分区文件
ii.第二步:用sqoop1.4的sqoop export命令导出该分区文件到mysql对应的T_XX临时表(勿删);
iii.第三步:命令行执行mysql命令,将T_XX表的数据加PT_DATE字段后转移到XX表,并清空T_XX表;
iv.第四步:更新当前同步表的最后同步分区为刚成功导出的分区编号。
d)继续循环下一个分区,直到当前表分区都已导出;
e)继续循环下一个需导出的hive表。
3.结束。打印成功提示及执行时长。
最后
以上就是想人陪秀发为你收集整理的hive表结构同步到MySQL_Hive数据表同步到Mysql的实现的全部内容,希望文章能够帮你解决hive表结构同步到MySQL_Hive数据表同步到Mysql的实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复