首页 > > > 大数据学习篇之Hive
简单的说就是让不会MapReduce编码的人但会SQL语句的人能很好的分析数据而设计出来的嫁接综合体。
实际上有些数据分析的操作并不需要很复杂的操作,比如可能只是查询某个年龄段由多少人,以及对应的浏览网页的次数,其实这种操作更类似于SQL的数据库操作。软件的发展应该是降低门槛,即是不明白里面原理,但是经过训练也能熟练的使用。比如将SQL和MapReduce结合起来组成了Hive,只要懂SQL语句,就可以使用自己熟悉的操作,HIve能自动进行MapReduce编程操作。
下面介绍几个简单的例子,分析SQL和MapReduce操作的过程,例一:
SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age;
统计不同年龄的用户访问不同网页的兴趣偏好,这里使用count(*)也可以,且一般的查询速度,count(*)=count(1)>count(id)>count(字段)。
MapReduce操作

MapReduce还是可以分为三个阶段,Map,Shuffle,Reduce
Map阶段按照Key,Value的形式,比如pageid = 1, age = 25转换后变成了<1,25>,计数次数为1,最后变成了<<1,25>,1>。
Shuffle阶段,将多个key相同的键值对进行组合,从图里可以看到,比如有两个<<2,25>,1>,通过Shuffle变成了<<1,25>,<1,1>>。
Reduce阶段,按照key对value进行累加求和例如<<1,25>,<1,1>>变成了<<1,25>,2>。
例二:
SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON (pv.userid = u.userid);
得到的结果表里应只有pageid和年龄,使用MapReduce操作如下:

Hive架构简单的描述
按照上面操作的顺序,大概能理清,最上面肯定是用户需求->转化为SQL语句(Hive)->MapReduce->HDFS。具体的架构有官方的:

更具体的有FaceBook的:

Hive的核心组件有三个分别是QL,SerDe,MetaStore。QL就是编译器,也是Hive中最核心的部分。Serde就是Serializer和Deserializer的缩写,用于序列化和反序列化数据,即读写数据。MetaStore对外暴露Thrift API,用于元数据的修改。比如表的增删改查,分区的增删改查,表的属性的修改,分区的属性的修改等。
参考博客:
https://time.geekbang.org/column/article/69459?gk_activity=0
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/818/viewspace-3169071/ ,如需转载,请注明出处,否则将追究法律责任。