一、hive 的历史价值
1)hive是hadoop上的killApplication,hive是hadoop上的数据仓库,hive同时兼具有数据仓库中的存储引擎和查询引擎的作用,而sparksql是一个更加出色和高级的查询引擎。所以在现在企业级应用中,sparksql+hive成为了业界使用大数据最为高效和流行的趋势。
2)hive是facebook推出的。只要是为了不懂java代码编码的人员也能通过sql来驾驭hadoop集群进行分布式数据的多维度分析,甚至可以通过web界面来直接操作hive(通过hive来驾驭hadoop),这对于市场营销人员,系统管理员,数据分析至关重要。
3)hive 的核心把hive 自己的sql语言即hql语言翻译为mapreduce代码,然后交给hadoop集群执行,也就是说hive本身是一个单机版的软件!!!
4)由于是通过写hql来完成业务需求的,所以相对于编写mapreduce而已非常的方便简易和灵活,能够非常轻易的满足业务的需求和多变的场景。
5)Hive几乎存在一切使用大数据的公司中!
二、Hive的本质到是什么?
1)Hive是分布式数据仓库,同时又是查询引擎,所以Spark SQL取代只是Hive查询引擎,在企业实际生产环境下Hive + Spark SQL是目前最为经典的数据分析组合;
2)Hive本身就是一个简单单机版本的软件,主要负责:
a)把HQL翻译成Mapper(s)-Reducer-Mapper(s)的代码; 并且可能产生很多MapReduce的Job;
b)把生产的MapReduce代码及相关资源打包成为Jar并发布到Hadoop集群中且进行运行(这一切都是自动的)。
三、hive 的架构设计
1)Hive的架构图
2)Hive中的数据只是元数据,所谓元数据就是hive要操作数据的描述信息,该metastore默认存储在derby中,但是derby不能被生成环境下的多用户去使用,所以生产环境下一般最常用的是mysql来存储hive 的元数据。
3)Hive要操作的数据是由hive 的配置文件决定的。在生产环境下该数据位于hdfs 上(其实也就是hdfs上的普通文件而已,只不过是按照hive的方式组织一下)。
4)从hive的角度来看,数据就是一张张的table,我们的操作就是基于sql来多维度的查询table。
5)人们一直努力用hive来取代传统的数据仓库,但是以失败告终。因为hive太慢啦!!!所以业界目前趋势上黄金组合是hive(数据仓库的存储引擎)+sparksql(分析查询引擎)。
6)Hql会被hive解释,优化并生成查询计划,一般情况下查询计划会被转化为mapreduce任务。
7)但是形如select * from table不会转化成为mapreduce 任务。
8)Hive 有索引吗? 没有!!!
四、Hive的安装实战
Hive只在一个节点上安装即可
1)上传tar包
2)解压
3)更名
4)配置mysql 5.6
1)
2)卸载
3)安装mysql
4)启动mysql
5)修改mysql的密码(注意:删除匿名用户,允许用户远程连接)
点击回车
设置新密码
6)登录mysql 用自己设置的新密码
7)查看数据库
8)修改mysql的用户登录权限,允许远程连接
9)用Navicat for MySQL 测试下远程连接
五、配置Hive
1)修改 hive-site.xml
修改hive-site.xml(删除所有内容,只留一个<property></property>)
添加如下内容:
2)修改hive-env.sh
在最后一行添加以下内容
3)修改hive-config.sh
在最后一行添加以下内容
4)下载驱动包(mysql-connector-java-5.1.35.tar.gz) 放入usr/local/hive/apache-hive-1.2.1/lib/
六、启动hive
1)先启动hadoop的hdfs 和yarn,mysql在启动hive。启动成功如下图所示
2)创建表
Hive的表有两种基本类型:一种内部表(这种表数据属于Hive本身,言外之意是如果原来的数据在HDFS的其它地方,此时数据会通过HDFS移动到Hive数据仓库所在的目录,如果删除Hive中的该表的话数据和元数据均会被删除)另外一种属于外部表(这种表数据不属于Hive数据仓库,元数据中会表达具体数据在哪里,使用的时候和内部表的使用是一样的,只是如果通过Hive去删除的话,此时删除的只是元数据,本没有删除数据本身);
3)查看表
七、使用hive 操作搜索引擎数据实战
1)将搜狗实验室的数据放入到hdfs 中
2)在hive 中创建表
3)将sogouQ3.txt 加载到表sogouQ3 中
4)在hive 中查询表sogouQ3
5)创建外部表
将数据放入hdfs 中
查询记录的总条数
找出排名前5位的内容
6)tdDate.txit 字段描述:分别为日期、年月、年、月、日、周几、第几周、季度、旬、半月。
tbstock.txt 字段描述:订单号,交易的位置, 交易的日期
tbStockdetail.txt 字段描述:订单号、行号、货品、、“”、数量、金额
在hvie中创建3张表
将数据load到tbDate表中
将数据load 到tbStock表中
在HDFS上如果直接把数据放入Hive数据仓库的话,会把数据直接剪切过去
将数据load 到tbStockDetail表中
统计季度销售前10
统计销售额大于20000
年度最畅销的商品
注:本学习笔记来自DT大数据梦工厂 微信公众号:DT_Spark 每晚8点YY永久直播频道:68917580