首页 理论教育 利用Hive分析搜索数据

利用Hive分析搜索数据

时间:2023-07-02 理论教育 版权反馈
【摘要】:接下来,我们演示如何使用Hive处理数据,主要步骤如下:●准备数据。2)使用该数据库。该示例统计SogouQ1表的记录总数,同时也可以了解Hive的具体运行过程。统计总共有多少条搜索baidu且排名和点击率都是第一的记录数。

利用Hive分析搜索数据

接下来,我们演示如何使用Hive处理数据,主要步骤如下:

●准备数据。

●了解要处理的数据。

●将数据导入到Hive中。

●开始使用Hive来分析搜索数据。

1.数据准备

在使用Hive分析数据之前,首先需要准备数据,本示例演示使用的数据来自搜狗实验室,可以自行去搜狗实验室官方网站(http://www.sogou.com/labs/)下载:用户查询日志。该数据格式如图1-4所示。

2.认识数据

首先认识一下要分析的数据,数据一共有6列,分别是:

●第一列,搜索时间。

●第二列,用户ID。

978-7-111-59197-9-Chapter01-21.jpg

图1-4 要分析的数据

●第三列,用户在搜索框中输入的搜索内容。

●第四列,搜索内容出现在搜索结果页面中的第几行。

●第五列,表示用户单击的是搜索出来的页面上的第几行。

●第六列,表示用户单击的超链接。

3.数据导入

准备好数据之后,需要将数据导入到Hive数据仓库中。

首先启动Hive,然后在里面创建一个名为hive的数据库,使用该数据库,并在这个数据库中创建一个表,命名为sogouQ1,具体操作如下:

1)创建一个名为hive的数据库。

978-7-111-59197-9-Chapter01-22.jpg

2)使用该数据库。

hive>use hive;(www.xing528.com)

OK

3)创建一张名为SogouQ1的表。

978-7-111-59197-9-Chapter01-23.jpg

4)将本地数据导入到SogouQ1表中。

978-7-111-59197-9-Chapter01-24.jpg

现在数据已经准备完毕,需要注意的是,数据的存放包括两种方式:数据存放在本地的磁盘文件中;数据存放在Hadoop集群中的HDFS分布式文件系统中。如果数据在HDFS上,那么我们在导入数据的时候,需要去掉load语句中的local关键字。另外,Hive的表分为内部表和外部表,可以简单地理解为,内部表是数据存储在Hive数据仓库中的表,而外部表则是数据不存在Hive的元数据中。对于内部表来说,在我们删除表的同时,数据也被删除了,而在删除外部表的时候,不会删除元数据。

4.使用Hive分析搜索数据

1)统计SogouQ1表的记录数。

该示例统计SogouQ1表的记录总数,同时也可以了解Hive的具体运行过程。

978-7-111-59197-9-Chapter01-25.jpg

从上面的运行结果中可以看到,SogouQ1表的数据总共有100万条,运行时间31.858秒。关于Hive的运行过程,这里做一个简单的说明。首先HQL语句会被Hive转换成map/reduce程序,然后通过hive自动打包并发布到集群中运行。所以在Hive中写HQL语句来进行增删改查操作时,其实最终都是通过map/reduce程序来完成的。

2)按条件统计SogouQ1表中满足条件的记录数。

下面是查询搜索关键字为baidu的记录总共有多少条。

978-7-111-59197-9-Chapter01-26.jpg

978-7-111-59197-9-Chapter01-27.jpg

从统计结果可知,包含关键字为baidu的记录共有4470条,查询时间为44.405秒。

3)对SogouQ1表进行更复杂的统计。

统计总共有多少条搜索baidu且排名和点击率都是第一的记录数。s_seq表示搜索内容出现在搜索结果页面中的第几行;c_seq表示用户点击的是搜索出来的页面上的第几行;s_seq=1 and c_seq=1表示搜索内容出现在搜集结果页面的排名是第一行,而且用户点击的就是搜索页面的第一行。

下面是具体的HQL语句及执行结果:

hive>select count(∗)fromSogouQ1 where s_seq=1 and c_seq=1 and word likebaidu

result:4124

从统计结果可知,符合查询项的记录共有4124条。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈