Hive的ETL实战
需求:
- 对web点击流日志基础数据表进行etl(按照仓库模型设计)
- 按各时间维度统计来源域名top10
已有数据表 “t_orgin_weblog” :
+------------------+------------+----------+--+ | col_name | data_type | comment | +------------------+------------+----------+--+ | valid | string | | | remote_addr | string | | | remote_user | string | | | time_local | string | | | request | string | | | status | string | | | body_bytes_sent | string | | | http_referer | string | | | http_user_agent | string | | +------------------+------------+----------+--+ |
数据示例:
| true|1.162.203.134| - | 18/Sep/2013:13:47:35| /images/my.jpg | 200| 19939 | "http://www.angularjs.cn/A0d9" | "Mozilla/5.0 (Windows | | true|1.202.186.37 | - | 18/Sep/2013:15:39:11| /wp-content/uploads/2013/08/windjs.png| 200| 34613 | "http://cnodejs.org/topic/521a30d4bee8d3cb1272ac0f" | "Mozilla/5.0 (Macintosh;| |
实现步骤:
1、对原始数据进行抽取转换
--将来访url分离出host path query query id
drop table if exists t_etl_referurl; create table t_etl_referurl as SELECT a.*,b.* FROM t_orgin_weblog a LATERAL VIEW parse_url_tuple(regexp_replace(http_referer, "\"", ""), 'HOST', 'PATH','QUERY', 'QUERY:id') b as host, path, query, query_id |
3、从前述步骤进一步分离出日期时间形成ETL明细表“t_etl_detail” day tm
drop table if exists t_etl_detail; create table t_etl_detail as select b.*,substring(time_local,0,11) as daystr, substring(time_local,13) as tmstr, substring(time_local,4,3) as month, substring(time_local,0,2) as day, substring(time_local,13,2) as hour from t_etl_referurl b; |
3、对etl数据进行分区(包含所有数据的结构化信息)
drop table t_etl_detail_prt; create table t_etl_detail_prt( valid string, remote_addr string, remote_user string, time_local string, request string, status string, body_bytes_sent string, http_referer string, http_user_agent string, host string, path string, query string, query_id string, daystr string, tmstr string, month string, day string, hour string) partitioned by (mm string,dd string); |
导入数据
insert into table t_etl_detail_prt partition(mm='Sep',dd='18') select * from t_etl_detail where daystr='18/Sep/2013'; insert into table t_etl_detail_prt partition(mm='Sep',dd='19') select * from t_etl_detail where daystr='19/Sep/2013'; |
分个时间维度统计各referer_host的访问次数并排序
create table t_refer_host_visit_top_tmp as select referer_host,count(*) as counts,mm,dd,hh from t_display_referer_counts group by hh,dd,mm,referer_host order by hh asc,dd asc,mm asc,counts desc; |
4、来源访问次数topn各时间维度URL
取各时间维度的referer_host访问次数topn
select * from (select referer_host,counts,concat(hh,dd),row_number() over (partition by concat(hh,dd) order by concat(hh,dd) asc) as od from t_refer_host_visit_top_tmp) t where od<=3; |
Hive的ETL实战相关推荐
- 干货 | Logstash自定义正则表达式ETL实战
0.题记 本文建立在干货 | Logstash Grok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式. 有时Logstash没有我们需要的模式. 幸运的是,我们有正则表达式库:On ...
- hive尚硅谷实战案例统计youtube视频热度
hive视频热度统计案例 文章目录 hive视频热度统计案例 背景及需求描述 项目的完成 1. 数据清洗 (1) maven依赖 (2)ETLUtils-处理具体的数据清洗逻辑 (3)ETLMappe ...
- hive mysql 实战_【Hive】HiveQL实战之分析函数窗口函数
本篇主要介绍将存储到Mysql的示例数据库Sakila以Sqoop的方式导入到Hive,然后详细讲解Hive的分析函数和窗口函数. 一 实战环境 1 Hive版本 hive> select ve ...
- Hive常用窗口函数实战
点击蓝字关注! 本篇文章大概3799字,阅读时间大约10分钟 本文介绍了Hive常见的序列函数,排名函数和窗口函数.结合业务场景展示了Hive分析函数的使用 Hive作为一个分析型的数据仓库组件提供了 ...
- CC00027.hadoop——|HadoopHive.V27|——|Hive.v27|Hive优化策略|实战.v03|
一.SQL优化 ### --- SQL优化~~~ 列裁剪和分区裁剪 ~~~ 列裁剪是在查询时只读取需要的列:分区裁剪就是只读取需要的分区. ~~~ 简单的说:select 中不要有多余的列,坚决避免 ...
- Hive join 优化实战
由于 hive 与传统关系型数据库面对的业务场景及底层技术架构都有着很大差异,因此,传统数据库领域的一些技能放到 Hive 中可能已不再适用.关于 hive 的优化与原理.应用的文章,前面也陆陆续续的 ...
- 第69课:Spark SQL通过Hive数据源JOIN实战 每天晚上20:00YY频道现场授课频道68917580
/* * *王家林老师授课http://weibo.com/ilovepains */ 每天晚上20:00YY频道现场授课频道68917580 源文件 person.txt Michael 29 A ...
- Flink x Zeppelin ,Hive Streaming 实战解析
行业解决方案.产品招募中!想赚钱就来传!>>> Flink 1.11 正式发布已经三周了,其中最吸引我的特性就是 Hive Streaming.正巧 Zeppelin-0.9-pre ...
- Hive数据仓库实战
文章目录 前言 一.Hive原理和功能介绍 二.Hive安装部署 三.Hive SQL操作 UDF函数 Hive 数据仓库模型设计 总结 前言 Hive作为大数据平台Hadoop之上的主流应用,公司一 ...
最新文章
- EAP 7 Alpha和Java EE 7入门
- C#省市二级联动(王者荣耀挑选英雄为例)
- Fragment懒加载预加载
- ecshop修改后台登陆密码
- php不能连接远程mysql_无法远程连接mysql怎么办
- 机器学习中为什么需要梯度下降_机器学习 —— 多元梯度下降
- acm康复训练记4-world final 2017
- mongodb oplog java_MongoDB oplog 深入剖析
- 徐培成2017大数据Hadoop经典案例-徐培成-专题视频课程
- BIOS设置图解教程
- js中substring()、substr() 、slice()的用法
- 【荐藏】代谢组学分析系列
- 魔法币 java_网易2018校招笔试编程题-魔法币 java实现
- 利用微信小程序实现web监控界面
- java基于ssm的校园教学评价系统设计与实现 aspnet python springboot
- 基于单片机的智能电子秤系统设计(#0507)
- 无人驾驶11:行为规划
- Android开发之打包APK详解
- 运动鞋折扣店如何贴吧引流?运动鞋推广引流加粉怎么做?
- php 无限滚动加载,无限滚动,_无限滚动加载数据问题,无限滚动 - phpStudy
热门文章
- 测试圈相亲平台开发流程(5):首页开发
- USACO 2021 January Contest, BronzeProblem 3. Just Stalling题解 贪心 排序
- 【EC200U】GPS定位应用案例
- 校内网明年将与QQ平分秋色
- Q for Mortals2笔记 -- 概述
- Cannot find module ‘worker_threads‘
- 一款可以适应于拼多多淘宝等店铺虚拟商品自动核销百度网盘自动发货机器人软件助手
- Firefox OS FOR i9250 build120731
- Linux 上如何禁用 USB 存储设备
- 使用Eclipse+httpClient+Jsoup读取网页数据-初级