hive的本质是hadoop客户端通过写sql转换成MapReduce提交给yarn、hdfs执行
hive的优点 操作接口采用类sql语法提供快速开发能力避免了去写MapReduce减少了开发人员学习成本hive执行延迟比较高因此常用于数据分析用于对实时性要求不高的场合hive优势在处理大数据对于小数据没有优势hive支持用户自定义函数可以根据自己的需求来实现自己的函数hive的缺点 hive的hql表达能力有限迭代式算法无法表达数据挖掘方面不擅长由于MapReduce数据处理流程限制效率更高的算法却无法实现hive的效率较低hive自动生成MapReduce作业通常情况下不够智能hive调优困难粒度较粗hive与数据库比较由于hive采用类sql查询语言hqlhive query language因此很容易将hive理解为数据库。其实结构上看hive和数据库除了拥有类似语言再无相似之处数据库可以用在online的应用但是hive是为数据仓库而设计的
数据存储位置hive是建立在Hadoop上的所有hive的数据都是存储在hdfs上的而数据库则可以将数据保存在块设备或者本地文件中
数据更新hive中不建议对数据的改写所有数据都是在加载的时候确定好的数据库则可以经常修改
索引hive在加载数据时不会对数据有任何处理因此没有对数据有索引hive要访问数据中满足条件的特定值时需要暴力扫描整个数据。由于MapReducehive可以并行访问数据因此尽管没有索引对于大数据量的访问hive仍然可以体现优势
数据库通常会针对一个或者多个列进行建立索引因此对于少量的特定条件的数据访问数据库有很高的效率
由于数据的访问延迟高决定了hive不适合在线数据的查询
执行延迟hive查询时无索引需要扫描整个表因此延迟较高。此外MapReduce框架本身有较高的延迟利用MapReduce执行hive查询时延迟较高。相对数据库执行延迟较低。低也是有条件的即数据库规模较小当数据规模大到超过数据库的处理能力的时候hive的并行计算显然可以体现优势
可扩展性由于hive是在hadoop上的因此hive的可扩展性与hadoop可扩展性是一致的
数据规模由于hive建立在集群上并可以利用MapReduce进行并行计算因此可以支持很大规模的数据数据库的可以支持的数据规模较小管理表
默认创建的表都是管理表也称为内部表当删除一个管理表的时候hive也会删除这个表的数据
也可以建立外部表删除外部表时数据不会被删除不过描述的元数据信息会被删除元数据为描述数据的数据主要是描绘数据属性properties信息用来支持如指示存储位置、历史数据、资源查找、文件记录等功能