1.Hive 是什么
hive 是一个构建在Hadoop上的数据仓库工具,它可以让结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,剋将SQL语句转换为MapReduce任务进行运行,其优点是学习成本低.
hive的目的是让精通SQL技能的分析师能够在Facebook存放在HDFS的大规模数据集上进行查询操作. 目前,Hive已经成为一个通用的、可伸缩的数据处理平台.
2.Hive的优缺点
其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析,并且,它的另一个优势是工业界非常熟悉它.
Hive构建在基于静态批处理的Hadoop之上,Hadoop通常有较高的延迟,并且在作业提交和调度的时候需要大量的开销,因此Hive并不能在大规模数据集上实现低延迟快速的查询.
例如,Hive在几百MB的数据集上执行查询一般有几分钟的时间延迟.因此,Hive并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP).
Hive查询过程严格遵守Hadoop MapReduce的作业执行模型,Hive将用户的HiveQL语句通过解释器转换为MapReduce作业提交到Hadoop集群,Hadoop监控作业的执行过程,然后返回作业执行结果给用户.Hive并非为联机事务处理而设计,Hive并不提供实时的查询和基于行级的数据更新操作.Hive的最佳实践是大数据集的批处理作业,例如,网络日志分析.
3、理解Hive的几个点
1、Hive 由 Facebook 实现并开源
2、是基于 Hadoop 的一个数据仓库工具
3、可以将结构化的数据映射为一张数据库表
4、并提供 HQL(Hive SQL)查询功能
5、底层数据是存储在 HDFS 上(HDFS:Hadoop分布式文件系统)
6、Hive的本质是将 SQL 语句转换为 MapReduce 任务运行
7、使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算。
Hive依赖于HDFS存储数据,Hive将HQL转换为MapReduce任务执行,所以说Hive是一个基于Hadoop的数据仓库工具。其实就是基于HDFS的一个MapReduce计算工具,对存储在HDFS中的数据进行分析和管理。
4.使用
1.在hive中查询
查询线上数据,有时候如果某个表数据量非常大,直接一个SQL去查询,可能会出现如下问题:
导致查询失败。或者当数据出现分库分表的时候,查询一条数据还得先根据分库分表的规则计算出该数据会出现在哪个库哪个表里,然后再执行SQL查询。这种工作效率非常低下。
可以使用HQL直接在Hive上查询离线数据,因为Hive执行的是MR程序(MR程序:由Map和Reduce两部分代码组成),分布式并行搜索,能够极大提升搜索效率。