接下来,我们演示如何使用Hive处理数据,主要步骤如下:
●准备数据。
●了解要处理的数据。
●将数据导入到Hive中。
●开始使用Hive来分析搜索数据。
1.数据准备
在使用Hive分析数据之前,首先需要准备数据,本示例演示使用的数据来自搜狗实验室,可以自行去搜狗实验室官方网站(http://www.sogou.com/labs/)下载:用户查询日志。该数据格式如图1-4所示。
2.认识数据
首先认识一下要分析的数据,数据一共有6列,分别是:
●第一列,搜索时间。
●第二列,用户ID。
图1-4 要分析的数据
●第三列,用户在搜索框中输入的搜索内容。
●第四列,搜索内容出现在搜索结果页面中的第几行。
●第五列,表示用户单击的是搜索出来的页面上的第几行。
●第六列,表示用户单击的超链接。
3.数据导入
准备好数据之后,需要将数据导入到Hive数据仓库中。
首先启动Hive,然后在里面创建一个名为hive的数据库,使用该数据库,并在这个数据库中创建一个表,命名为sogouQ1,具体操作如下:
1)创建一个名为hive的数据库。
2)使用该数据库。
hive>use hive;(www.xing528.com)
OK
3)创建一张名为SogouQ1的表。
4)将本地数据导入到SogouQ1表中。
现在数据已经准备完毕,需要注意的是,数据的存放包括两种方式:数据存放在本地的磁盘文件中;数据存放在Hadoop集群中的HDFS分布式文件系统中。如果数据在HDFS上,那么我们在导入数据的时候,需要去掉load语句中的local关键字。另外,Hive的表分为内部表和外部表,可以简单地理解为,内部表是数据存储在Hive数据仓库中的表,而外部表则是数据不存在Hive的元数据中。对于内部表来说,在我们删除表的同时,数据也被删除了,而在删除外部表的时候,不会删除元数据。
4.使用Hive分析搜索数据
1)统计SogouQ1表的记录数。
该示例统计SogouQ1表的记录总数,同时也可以了解Hive的具体运行过程。
从上面的运行结果中可以看到,SogouQ1表的数据总共有100万条,运行时间31.858秒。关于Hive的运行过程,这里做一个简单的说明。首先HQL语句会被Hive转换成map/reduce程序,然后通过hive自动打包并发布到集群中运行。所以在Hive中写HQL语句来进行增删改查操作时,其实最终都是通过map/reduce程序来完成的。
2)按条件统计SogouQ1表中满足条件的记录数。
下面是查询搜索关键字为baidu的记录总共有多少条。
从统计结果可知,包含关键字为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 like′baidu′
result:4124
从统计结果可知,符合查询项的记录共有4124条。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。