我是靠谱客的博主 懦弱小蘑菇,最近开发中收集的这篇文章主要介绍对HUE中的各种hive表的增量数据进行汇总,再将此hive表使用sqoop增量导出数据到mysql中,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
这篇博客主要汇总了我在具体项目中一些处理步骤。
1、项目背景:
首先介绍一个这里会提到的一个trace表,这个表是之前项目中我汇总了各类信息,包括人脸识别后的对比数据、某学校卡口的进入车辆数据、访客记录、门禁刷卡记录与一卡通消费记录等。因为其中很多字段其实是重复的,所以汇总在这个表里。然后会有一个属性告知这条数据是来源于何种表,这样统计各种统一要获取的信息。比如:通过一卡通在时间段内的消费记录判断某学生是否异常消费、通过一周的门禁刷卡记录与摄像头比对记录判断学生是否在校等。这些不是这次总结的内容,都是之前项目已经完成的。只是之前每天汇总了trace表数据后,再统计一次今天所有的数据,但是现在甲方有些需求需要我们每个小时更新一次,比如在某小时内是否有同学出现了异常消费。所以之前的博客都是做一些铺垫。
2、hive与MySQL中创建的对应表
hive:
CREATE TABLE activemq_topic.trace_copy (
alarmtime string,
num string,
xm string,
type string,
indexcode string,
date string,
timehour string,
detail string,
fromtype string
)partitioned by (datet string,hours string);
这里跟之前要求添加的数据一样创建日期与小时的双分区。
MySQL:
然后同样要在mysql中创建同样字段与属性的对应表:
3、修改插入hive中trace表的指令
A.修改hive中各种数据汇总与trace表的语句:
可以先看之前我隔天统计一次的指令,一开始我分区就按照日期分区:
insert overwrite table activemq_topic.trace partition(date_time='${lastDay}')
SELECT h.credentialsNum num,h.humanName xm,type,indexCode,alarmTime,SUBSTR(s.alarmTime,0,10) as date,SUBSTR(s.alarmTime,11,3) as timeHour,s.bkgpicurl as detail,'抓拍机' as fromType
FROM activemq_topic.snap_match s LEFT JOIN activemq_topic.humans h ON s.humanId = h.humanId
WHERE alarmTime > '${lastDay}' AND alarmTime <= '${thisDay}'
union all
SELECT .......................
按照小时则修改为以下指令:
insert overwrite table activemq_topic.trace_copy partition(datet='${date_today}',hours='${hour}')
SELECT h.credentialsNum num,h.humanName xm,type,indexCode,alarmTime,SUBSTR(s.alarmTime,0,10) as date,SUBSTR(s.alarmTime,11,3) as timeHour,s.bkgpicurl as detail,'抓拍机' as fromType
FROM activemq_topic.snap_match_copy s LEFT JOIN activemq_topic.humans h ON s.humanId = h.humanId
WHERE `datet`='${date_today}' AND `hours`='${hour}'
union all
SELECT yhm ..............................
这里我们插入时候就设定之前创建trace的两个日期与小时分区。还有这里因为这些我所需要查询的表也都已经按照日期还有小时分区了,所以他们的判断条件就是 `datet`='${date_today}' AND `hours`='${hour}' 。
B.插入hive的数据已经有了,接下去就是从hive导入数据到mysql中的sqoop指令了。
export --connect jdbc:mysql://xdata4:3306/jxcy_dpxs?characterEncoding=utf8 --username root --password P@ssw0rd4321 --table trace_copy --fields-terminated-by "