环境以及资料准备
hadoop2.7集群(搭建在centos7上,一台master,两台slaver),hive1.2.1,以及储存元数据的mysql,
2008年搜狗搜索记录日志文件(已清洗):
链接:http://pan.baidu.com/s/1sljUV6X,密码:p1mt
步骤
- 启动集群
# start-dfs.sh
# start-yarn.sh
start-dfs.sh启动hdfs分布式存储,start-yarn.sh启动yarn资源调度。
2. 启动hive
# hive
3. 建立表格
hive> create table sgr(qtime string, qid string,qword string, url string) row format delimited fields terminated by ',';
导入数据
通过Xftp将下载下来的文件上传到master上(我这里是上传到了/root/data目录下”)然后上传到表中:“`
hive> load data local inpath ‘/root/data/sougou.dic’into table sgr;统计表中数据:
通过执行select count() from sgr*这句HQL查询语句可以看到,表中数据已经上传成功,总计有1724264条记录,表中部分数据如下所示:
分析挖掘数据
hive> create table sg_results as select keyword,count(1) as count from (select qword as keyword from sgr) t group by keyword order by count desc;
回车,hadoop启动mapreduce
- 查询
hive> select * from sg_results limit 10;
总结
hive是一个基于Hadoop的一格数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。缺点是hive处理速度慢,无法实时的将数据分析并输出结果,所以hive多用于线下的数据处理分析,相比strom而言,hive的执行速度就太慢了。