标签:
索引是标准的数据库技术,hive0.7版本之后支持索引。Hive提供有限的索引功能,这不像传统的关系型数据库那样有"键(Key)"的概念,用户可以再某些列上创建索引来加速某些操作,给一个表创建的索引数据被保存在另外的表中。Hive的索引功能现在还相对较晚,提供的选项还较少。但是,索引被设计为可使用内置的可插拔的java代码来控制,用户可以扩展这个功能来满足自己的需求。当然不是说所有的查询都会受惠于Hive索引。用户可以使用EXPLAIN语法来分析HiveQL语句是否可以使用索引来提升用户查询的性能。像RDBMS中的索引一样,需要评估索引创建的是否合理,毕竟,索引需要更多的磁盘空间,并且创建维护索引也会有一定的的代价。用户必须要权衡从索引得到的好处和代价。
下面说说怎么创建索引:
1.先创建表:
2.导入数据:
3.创建索引之前测试:
一共用了14.107s
4.对user创建索引:
这样就对user表创建好了一个索引。
5.对创建索引后的user再进行测试:
时间用了13.042s,这和没有建索引的效果差别不大。
在Hive创建索引还存在bug:如果表格的模式信息来自SerDe,Hive将不能创建索引:
这个bug发生在Hive0.10.0、0.10.1、0.11.0,在Hive0.12.0已经修复了,详情请参见:https://issues.apache.org/jira/browse/HIVE-4251
文章来自过往记忆:http://www.iteblog.com/archives/836
标签:
原文地址:http://www.cnblogs.com/thinkpad/p/5173666.html