没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
17. Hive 统计
一、基础概述
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,
并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。
其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专
门的 MapReduce 应用,十分适合数据仓库的统计分析。
Hive 构建在基于静态批处理的 Hadoop 之上,由于 Hadoop 通常都有较高的延迟并且在作业
提交和调度的时候需要大量的开销。因此,Hive 并不适合那些需要低延迟的应用,它最适
合应用在基于大量不可变数据的批处理作业,例如,网络日志分析。
Hive 的特点是:可伸缩(在 Hadoop 集群上动态的添加设备)、可扩展、容错、输出格式的
松散耦合。
Hive 将元数据存储在关系型数据库(RDBMS)中,比如 MySQL、Derby 中。
二、需求概述
在本节中,我们将使用 Hive 对以下指标进行统计并演示:
1. 移动端和 PC 端,用户比例
2. 用户评论周期(收到货后,一般多久进行评论)
3. 会员级别统计(判断购买此商品的用户级别)
4. 每天评论量(大体能反映出下单时间)
5. 自定义 UDF,功能为:去掉评论时间的时分秒,只保留年月日
三、实验步骤
1. 获取本次实验使用的数据:
[hfut@master ~]$ cp ~/resources/hive-data/pinglun ~/hive-data/
2. 初始化操作
启动 Hadoop;启动 MySQL 服务;启动 Hive。
3. 在 Hive 创建一张表,用于存放清洗后的数据,表名为 pinglun,字段名、字符类型、字段
解释如下:
1. productid string 产品 ID
2. commentcount int 评论数
3. goodcount int 好评数
4. generalcount int 中评数
5. poorcount int 差评数
6. goodrateshow float 好评率
7. generalrateshow float 中评率
8. poorrateshow float 差评率
9. guid string 随机生成 ID
10. content string 评论内容
11. creationtime string 写评论的时间
12. score int 打分
13. nickname string 昵称
14. userlevelname string 会员级别
15. userclientshow string 评论设备
16. ismobile string 是否移动端
17. days int 评论时间距【收货/下单】时间多长时间
hive> create table pinglun ( productid string, commentcount int, goodcount int, generalcount int,
poorcount int, goodrateshow float, generalrateshow float, poorrateshow float, guid string, content
string, creationtime string, score int, nickname string, userlevelname string, userclientshow string,
ismobile string, days int) row format delimited fields terminated by '\t';
创建成功后,查看 pinglun 表的表结构:
当然,也可以创建外部表:
hive> create external table if not exists pinglun ( productid string, commentcount int, goodcount int,
generalcount int, poorcount int, goodrateshow float, generalrateshow float, poorrateshow float, guid
string, content string, creationtime string, score int, nickname string, userlevelname string,
userclientshow string, ismobile string, days int) row format delimited fields terminated by '\t';
外部表的创建方法比内部表多了一个 external,同时还加上了 if 判断,判断创建表之前,是
否存在同样名称表。
Hive 创建内部表时,会将数据移动到数据仓库指向的路径;创建外部表时,仅记录数据所
在的路径, 不对数据的位置做任何改变。
在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除
数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据,生产中常
使用外部表。
4. 表设计好以后,在 Hive 端使用 load 命令,将/home/hfut/hive-data 下的 pinglun 导入 Hive
表中。
hive> load data local inpath '/home/hfut/hive-data/pinglun' into table pinglun;
在 hive 中,执行查询操作,验证数据是否导入成功。
剩余17页未读,继续阅读
资源评论
我有多作怪
- 粉丝: 14
- 资源: 299
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功