MapFile 文件的问题

MapFile 文件的问题

问题:老师MapFile 由两部分组成,一个是Index 一个是Data

index作为文件的数据索引,主要记录了每个RecordKey值 

这句话的意思是 记录文件名的意思吗?

以及该Record在文件中的偏移量

这句话偏移量是啥意思,能举个例子吗?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
徐老师 2022-03-24 22:51:02

mapfile中存储的是key-value类型的数据,key是小文件的文件名,value是小文件的内容。


index是mapfile中的索引,他会对key的值建立索引,便于后期快速通过key进行查找。


record代表的是mapfile中的一条记录,其实就是一个key-value。


偏移量代表的是这条数据在mapfile中的位置。

例如:针对一个文件而言,文件中的第一个字符,我们可以说第一个字符在这个文件中的偏移量是0。那么第二个字符在这个文件中的偏移量就是1了,后面的以此类推。

  • 提问者 慕无忌4072121 #1

    老师,那mapfile 生成两个文件,第一个文件里面存的是key(小文件的文件名) value(存的是小文件对应的数据),第二个文件里存的(对第一个文件key 值映射的索引值),然后就没了,我理解的没错吧,在建立阅读器时,读的时候,会扫描第二个文件里的索引值找到对应的key 值随之找到value 值?

    2022-03-24 23:59:33
  • 提问者 慕无忌4072121 #2

    SequenceFile 只会生成一个文件,里面就是存的key 和value?那对于小文件的解决方案有两种一种SequenceFile 和MapFile ,那在什么样的情况下选择SequenceFile 或者MapFile?

    2022-03-25 00:01:54
  • Mapfile和seqfile都是只产生一个文件,这个文件不是普通的文件,而是一种特殊格式的数据结构。针对mapfile而言,索引和key-value都存储在一个文件中。 如果你的需求是需要根据小文件的名称快速查找到对应的内容,那么需要使用mapfile,如果没有这种查询需求,只需要对所有数据遍历进行计算,直接使用seqfile即可。 他们两个的主要区别就是mapfile带索引,根据小文件名称查询快,seqfille必须挨个遍历才能查找到对应的文件,当然维护索引需要一些存储层面的开销,没有这种查询需求的话就不必维护索引了。
    2022-03-25 06:32:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师