整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

12.4.2 更新、事务和索引

hadoop 小红牛 29℃ 0评论

更新、事务和索引都是传统数据库最重要的特性。但是,直到最近,Hive
也还没有考虑支持这些特性,因为Hive被设计为用MapReduce操作 HDFS数据。在这样的环境下,“全表扫描”(full-table
scan)是常态操作, 而表更新则是通过把数据变换后放入新表实现的。对于在大规模数据集上 运行的数据仓库应用,这一方式很见效。

Hive不支持更新(或删除),但支持INSERT INTO,所以可以向现有表中增 加新的行。

在0.7.0发布版本中,Hive引入了索引,以在某些情况下加快査询的速度。
对于SELECT * from t WHERE x = a在这样的查询,因为只需要扫描表
文件的一小部分,因此可以利用在列x上的索引。目前Hive的索引分成两
类:紧凑(compact)索引和位图(bitmap)索引。(索引的实现被设计为可插拔
的(pluggable),所以为了其他目的而设计的索引实现会陆续出现。)

紧凑索引存储每个值的HDFS块号,而不是存储文件内偏移量。因此存储
不会占用过多的磁盘空间,且对于值被聚簇(clustered)存储于相近行的情
况,索引仍然有效。位图索引使用压缩的位集合(bitset)来高效存储具有某
个特殊值的行。这种索引一般适合于具有较少取值可能(low-cardinality)的 列(如性别或国别)。

Hive的0.7.0发布版本还引入了表级(table-level)和分区级(partition-level)的
锁。有了锁,就可以防止一个进程删除正在被另一个进程读取的表。锁由 ZooKeeper透明管理,因此用^不必执行获得和释放锁的操作,但仍然可以
通过SHOW LOCKS语句获取已经获得了哪些锁的信息。默认情况下,并未 启用锁的功能。

改变也来自另一个方向:HBase集成。HBase(第13章)和HDFS相比,有着 不同的存储特性,如行更新和列索引。因此,我们可以希望Hive在后续的 发布版本里利用这些HBase的特性。

转载请注明:全栈大数据 » 12.4.2 更新、事务和索引

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址