《淘宝双11数据分析与预测课程案例---步骤二:Hive数据分析》
开发团队:厦门大学数据库实验室 联系人:林子雨老师 ziyulin@xmu.edu.cn
版权声明:版权归厦门大学数据库实验室所有,请勿用于商业用途;未经授权,其他网站请勿转载
本文介绍大数据课程实验案例“淘宝双11数据分析与预测”的第二个步骤,Hive数据分析。在实践本步骤之前,请先完成该实验案例的第一个步骤大数据案例——本地数据集上传到数据仓库Hive。这里假设你已经完成了前面的第一个步骤。
数据仓库Hive概念及其基本原理、SQL语句、数据库查询分析
数据仓库Hive基本操作、创建数据库和表、使用SQL语句进行查询分析
1.启动Hadoop和Hive 2.创建数据库和表 3.简单查询分析 4.查询条数统计分析 5.关键字条件查询分析 6.根据用户行为分析 7.用户实时查询分析
请登录Linux系统(本教程统一采用hadoop用户名登录系统),然后,打开一个终端(可以按快捷键Ctrl+Alt+T)。 本教程中,Hadoop的安装目录是“/usr/local/hadoop”,Hive的安装目录是“/usr/local/hive”。 因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库,请在终端中输入下面命令:
由于Hive是基于Hadoop的数据仓库,使用HiveQL语言撰写的查询语句,最终都会被Hive自动解析成MapReduce任务由Hadoop去具体执行,因此,需要启动Hadoop,然后再启动Hive。
请执行下面命令启动Hadoop(如果你已经启动了Hadoop就不用再次启动了):
然后,执行jps命令看一下当前运行的进程:
如果出现下面这些进程,说明Hadoop启动成功了。
下面,继续执行下面命令启动进入Hive:
通过上述过程,我们就完成了MySQL、Hadoop和Hive三者的启动。 启动成功以后,就进入了“hive>”命令提示符状态,可以输入类似SQL语句的HiveQL语句。
然后,在“hive>”命令提示符状态下执行下面命令:
执行结果如下:
可以执行下面命令查看表的简单结构:
执行结果如下:
二、简单查询分析 先测试一下简单的指令:
执行结果如下:
如果要查出每位用户购买商品时的多种信息,输出语句格式为 select 列1,列2,….,列n from 表名; 比如我们现在查询前20个交易日志中购买商品时的时间和商品的种类
执行结果如下:
有时我们在表中查询可以利用嵌套语句,如果列名太复杂可以设置该列的别名,以简化我们操作的难度,以下我们可以举个例子:
执行结果如下:
这里简单的做个讲解,action as at ,cat_id as ci就是把action 设置别名 at ,cat_id 设置别名 ci,FROM的括号里的内容我们也设置了别名ul,这样调用时用ul.at,ul.ci,可以简化代码。
三、查询条数统计分析 经过简单的查询后我们同样也可以在select后加入更多的条件对表进行查询,下面可以用函数来查找我们想要的内容。 (1)用聚合函数count()计算出表内有多少条行数据
执行结果如下:
我们可以看到,得出的结果为OK下的那个数字54925330( (2)在函数内部加上distinct,查出uid不重复的数据有多少条 下面继续执行操作:
执行结果如下:
(3)查询不重复的数据有多少条(为了排除客户刷单情况) **
执行结果如下:
可以看出,排除掉重复信息以后,只有4754条记录。 注意:嵌套语句最好取别名,就是上面的a,否则很容易出现如下错误.
四.关键字条件查询分析 1.以关键字的存在区间为条件的查询 使用where可以缩小查询分析的范围和精确度,下面用实例来测试一下。 (1)查询双11那天有多少人购买了商品
执行结果如下:
2.关键字赋予给定值为条件,对其他数据进行分析 取给定时间和给定品牌,求当天购买的此品牌商品的数量
执行结果如下:
五.根据用户行为分析 从现在开始,我们只给出查询语句,将不再给出执行结果。 1.查询一件商品在某天的购买比例或浏览比例
根据上面语句得到购买数量和点击数量,两个数相除即可得出当天该商品的购买率。 2.查询双11那天,男女买家购买商品的比例
上面两条语句的结果相除,就得到了要要求的比例。 3.给定购买商品的数量范围,查询某一天在该网站的购买该数量商品的用户id
六.用户实时查询分析 不同的品牌的浏览次数