我是靠谱客的博主 想人陪秀发,最近开发中收集的这篇文章主要介绍hive表结构同步到MySQL_Hive数据表同步到Mysql的实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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.配置列表

0.png

ii.若存在,取得最后一次同步的分区名保存到export_pt

1.png

iii.取到需要导出的分区到folder变量

2.png

图一

b)情况二:从hdfs://edi/edi_conf中没有取到last_sync_dt,表示从来没同步过该表,所以要同步的数据就是该表在hdfs路径下所有分区。如图一。

2.开始同步

a)循环所有分区的文件列表,每次同步一个分区的数据;

b)读取当前操作hive table需要同步到mysql的分区列表folders,遍历folders;

3.png

c)导出一个分区

i.第一步:取到需要导出的分区文件

ii.第二步:用sqoop1.4的sqoop export命令导出该分区文件到mysql对应的T_XX临时表(勿删);

iii.第三步:命令行执行mysql命令,将T_XX表的数据加PT_DATE字段后转移到XX表,并清空T_XX表;

iv.第四步:更新当前同步表的最后同步分区为刚成功导出的分区编号。

d)继续循环下一个分区,直到当前表分区都已导出;

e)继续循环下一个需导出的hive表。

4.png

3.结束。打印成功提示及执行时长。

最后

以上就是想人陪秀发为你收集整理的hive表结构同步到MySQL_Hive数据表同步到Mysql的实现的全部内容,希望文章能够帮你解决hive表结构同步到MySQL_Hive数据表同步到Mysql的实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部