Hive 数据实战
需求
- remote_addr 用户IP
1.用于根据地址确认区域
2.用于统计来自同一个(外网)用户的访问数量 - time_local 用户访问时间
1.分析用户访问时间段
2.合理安排客服上班时间 - request 用户请求的URL
1.统计用户最感兴趣的内容
2.用户最容易发现的区域/内容 - http_referer 用户跳转过来的网站
1.了解客户的来源
2.统计广告投放
一、创建原表
- 数据存储格式 默认:TEXTFILE
- 数据压缩 默认:ZLIB
- map output 数据压缩 none
- 默认:管理表
创建原表 bf_log_src
drop table if exists default.bf_log_src;
create table if not exists default.bf_log_src(
remote_addr string,
remote_user string,
time_local string,
request string,
status string,
body_bytes_send string,
request_body string,
http_referer string,
http_user_agent string,
http_x_forworded_for string,
host string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ("input.regex" = "(\"[^ ]*\") (\"[^ ]*\") (\"[^\"]*\") (\"[^\"]*\") (\"[0-9]*\") (\"[0-9]*\") ([^ ]*) (\"[^ ]*\") (\"[^\"]*\") (\"[^ ]*\") (\"[^ ]*\")");
加载数据
load data local inpath '/opt/datas/bf.log' into table bf_log_src;
二、根据业务需求创建子表
- 数据存储格式 ORCfile | parquet
- 数据压缩 snappy
- map output 数据压缩 snappy
- 外部表
- 分区表
创建子表 bf_log_comm
drop table if exists default.bf_log_comm;
create EXTERNAL table if not exists default.bf_log_comm(
remote_addr string,
time_local string,
request string,
http_referer string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
stored as orc
location '/user/hive/warehouse/bf_log_comm/'
tblproperties ("orc.compression"="snappy") ;
加载数据
insert into table default.bf_log_comm select remote_addr,time_local,request,http_referer from default.bf_log_src;
三.数据清洗
3.1 删除引号
3.2 更改日期
定义方法参考:Hive 中的 UDF
注意:输入数据类型定义为Text会导致编码错误,改为String即可解决问题
# 添加正则表达式支持包
add jar /opt/softwares/hive-1.2.2/lib/hive-contrib-1.2.2.jar;
# 添加 UDF jar 包
add jar /opt/datas/RemoveDoubleQuotationMarks.jar;
# 创建临时方法
create temporary function my_rm_marks as "com.cenzhongman.hive.udf.RemoveDoubleQuotationMarks";
create temporary function ChangeDate as "com.cenzhongman.hive.udf.ChangeDate";
替换数据
insert overwrite table default.bf_log_comm select my_rm_marks(remote_addr),ChangeDate(my_rm_marks(time_local)),my_rm_marks(request),my_rm_marks(http_referer) from default.bf_log_src;
四、使用自带函数分析数据
desc function extended substring ;
#分析时间段
select t.hour,count(*) cnt from
(select substring(time_local,9,2) hour from bf_log_comm) t
group by t.hour order by cnt desc;
#分析IP地址
select t.pre_ip,count(*) cnt from (select substring(remote_addr,1,7) pre_ip from bf_log_comm) t group by t.pre_ip order by cnt;
Hive 数据实战的更多相关文章
- 《OD大数据实战》Hive环境搭建
一.搭建hadoop环境 <OD大数据实战>hadoop伪分布式环境搭建 二.Hive环境搭建 1. 准备安装文件 下载地址: http://archive.cloudera.com/cd ...
- 大数据开发实战:Hive优化实战3-大表join大表优化
5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优 ...
- 实战 | Hive 数据倾斜问题定位排查及解决
Hive 数据倾斜怎么发现,怎么定位,怎么解决 多数介绍数据倾斜的文章都是以大篇幅的理论为主,并没有给出具体的数据倾斜案例.当工作中遇到了倾斜问题,这些理论很难直接应用,导致我们面对倾斜时还是不知所措 ...
- 从零自学Hadoop(17):Hive数据导入导出,集群数据迁移下
阅读目录 序 将查询的结果写入文件系统 集群数据迁移一 集群数据迁移二 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephis ...
- 《OD大数据实战》驴妈妈旅游网大型离线数据电商分析平台
一.环境搭建 1. <OD大数据实战>Hadoop伪分布式环境搭建 2. <OD大数据实战>Hive环境搭建 3. <OD大数据实战>Sqoop入门实例 4. &l ...
- sqoop用法之mysql与hive数据导入导出
目录 一. Sqoop介绍 二. Mysql 数据导入到 Hive 三. Hive数据导入到Mysql 四. mysql数据增量导入hive 1. 基于递增列Append导入 1). 创建hive表 ...
- 《OD大数据实战》HDFS入门实例
一.环境搭建 1. 下载安装配置 <OD大数据实战>Hadoop伪分布式环境搭建 2. Hadoop配置信息 1)${HADOOP_HOME}/libexec:存储hadoop的默认环境 ...
- php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。
这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...
- 大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录
一.背景介绍 最近几天,接到公司的一个将当前大数据平台数据全部迁移到阿里云ODPS平台上的任务.而申请的这个ODPS平台是属于政务内网的,因考虑到安全问题当前的大数据平台与阿里云ODPS的网络是不通的 ...
随机推荐
- Java学习笔记——集合
类集简介 从JDK1.2开始Java引入了类集开发框架,所谓的类集指的就是一套动态对象数组的实现方案,在实际开发之中没有有何一项开发可以离开数组,但是传统的数组实现起来非常的繁琐.而且长度是其致命伤, ...
- Cocos2D-HTML5 Android项目编译
首先要有 Eclipse 和 ADT.CDT.Android SDK.Android NDK.新建一个文件MoonWar_Apk.cmd,将以下代码拷贝其中,双击之即可. set EngineHome ...
- XCode 如何真机运行别人的demo项目
iOS应用安装到真机需要证书和mobileprovision 文件,拿到别人的项目 是没有这些的 ,也就运行不起来. 要想运行起来, 需要选中项目, target - > 修改 bundlei ...
- MySQL入门很简单: 13 数据备份和还原
1. 数据备份 1)使用mysqldump命令备份 第一种:备份一个数据库 mysqldump -u username -p dbname table1 table2 ... > BackupN ...
- Javascript作业—数组去重(要求:原型链上添加函数)
数组去重(要求:原型链上添加函数) <script> //数组去重,要求:在原型链上添加函数 //存储不重复的--仅循环一次 if(!Array.prototype.unique1){ A ...
- 增量数据同步中间件DataLink分享(已开源)
项目介绍 名称: DataLink['deitə liŋk]译意: 数据链路,数据(自动)传输器语言: 纯java开发(JDK1.8+)定位: 满足各种异构数据源之间的实时增量同步,一个分布式.可扩展 ...
- 关于nutz跨服务器上传文件
关于nutz跨服务器上传文件 发布于 578天前 作者 yong9664 770 次浏览 复制 上一个帖子 下一个帖子 标签: 无 是这样的,项目在一台服务器,文件要存储到另外一台服务器 ...
- win10自带应用图标显示感叹号无法打开如何解决(详细版)
现象 今天打开电脑图片时发现系统自带的大多应用都无法运行,这些应用图标上都显示着一个感叹号, 应用图标上的颜色被覆上了一层黑色点击后无法运行,自带的应用商店也无法打开,想重装软件都不行这是怎么回事呢? ...
- 线程 Thread类 的四个构造方法简介
在线程中,Thread类有四个构造方法: 当我们使用 Thread类创建对象的时候,传入参数,就会用到构造方法.ThreadStart 和ParameterizedThreadStart 都是 委托类 ...
- Map详解
https://mp.weixin.qq.com/s/s4KLQyE5bY833kGzWl3vsg