Hive实战案例

离线作业执行流程

  1. 通过MapReduce进行数据清洗,得到ETL数据
  2. 创建Hive表,加载ETL数据
  3. 进行各种维度的统计,并写入到Hive表中
  4. 将Hive表中的数据导出到MySql(optional,可利用Sqoop框架实现该功能)

目前第一步已经执行完成,路径在 /etl/part-r-00000 数据格式如下:

timeurlrefereripuaprovincepageid
2013-07-21 16:42:55http://www.yihaodian.com/cart/cart.do?action=viewhttp://www.yihaodian.com/cmsPage/show.do?pageId=20391&provinceId=14117.27.153.190Mozilla/5.0 (compatible; MSIE 9.0;)福建省-

创建表trackinfo

create external table trackinfo(
	time string,
	url string,
	referer string,
	ip string,
	ua string,
	province string,
	pageid bigint
)PARTITIONED BY (day string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
location '/trackinfo';

说明:创建外部表名叫trackinfo,根据day字段进行分区,导入数据的行分隔符是\t,指定表文件位置在HDFS的trackinfo文件夹下。
在这里插入图片描述

加载ETL数据到trackinfo

load data inpath '/etl/part-r-00000' into table trackinfo partition(day='2013-07-21');

说明:加载HDFS上路径为/etc/part-r-00000的数据到trackinfo表中,分区天数day=2013-07-21
在这里插入图片描述

统计每个省份的总数

create external table province_stat(
province string,
count int
)PARTITIONED BY (day string)
location '/trackinfo/province';

insert overwrite table province_stat partition(day='2013-07-21')
select province,count(province) count from trackinfo group by province;

说明:将trackinfo中的省份统计结果写到province_stat表,并按天分区。
在这里插入图片描述

HDFS文件展示

在这里插入图片描述
在这里插入图片描述

总结

其实Hive就是把一个HiveQL语句翻译成一个MapReduce作业去跑,将跑完的结果写出到HDFS上,对于一些简单的统计任务可以用Hive来实现,但如果出现比较复杂的业务场景,还是得写代码来实现。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值