《Hadoop权威指南:大数据的存储与分析》—5.4.2 关于MapFile
【摘要】 本节书摘来自清华大学出版社《Hadoop权威指南:大数据的存储与分析》一书中第五章,第5.4.2节,作者是Tom White , 王 海 华 东 刘 喻 吕粤海 译。
5.4.2 关于MapFile
MapFile是已经排过序的SequenceFile,它有索引,所以可以按键查找。索引自身就是一个SequenceFile,包含了map中的一小部分键(默认情况下,是每隔128个键)。由于索引能够加载进内存,因此可以提供对主数据文件的快速查找。主数据文件则是另一个SequenceFile,包含了所有的map条目,这些条目都按照键顺序进行了排序。
MapFile提供了一个用于读写的、与SequenceFile非常类似的接口。需要注意的是,当使用MapFile.Writer进行写操作时,map条目必须顺序添加,否则会抛出IOException异常。
1. MapFile的变种
Hadoop在通用的键-值对MapFile接口上提供了一些变种。
l SetFile是一个特殊的MapFile,用于存储Writable键的集合。键必须按照排好的顺序添加。
l ArrayFile也是一个MapFile变种,该变种中的键是一个整型,用于表示数组中元素的索引,而值是一个Writable值。
l BloomMapFile也是一个MapFile变种,该变种提供了get()方法的一个高性能实现,对稀疏文件特别有用。该实现使用一个动态的布隆过滤器来检测某个给定的键是否在map文件中。这个测试非常快,因为是在内存中完成的,但是该测试结果出现假阳性的概率大于零。仅当测试通过时(键存在),常规的get()方法才会被调用。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)