5.4.2 mapFile读写和索引

5.4.2         mapFile

(1)定义

MapFile即为排序后的SequeneceFile,将sequenceFile文件按照键值进行排序,并且提供索引实现快速检索。

(2)索引

索引取值是每隔128(默认128,可通过io.map.index.interval来修改)个键取一个键组成,将索引加载到内存,实现对mapfile文件的快速检索。

 

 

 

(3)读写

非常类似sequenceFile,只需要换成MapFile.Reader和MapFile.Writer就可以了。执行文件写操作的时候,该文件是不可读取的。MapFile文件保证key-value的有序(基于key)是通过每一次写入key-value时的检查机制,这种检查机制其实很简单,就是保证当前正要写入的key-value与上一个刚写入的key-value符合设定的顺序。不符合key的非递减顺序,会直接报错,有序是按顺序写入,不是自动的去对输入的key-value排序。

在命令行显示mapFile的文件内容同样要用  -text

(4)SequenceFile转mapFile

mapFile既然是排序和索引后的SequenceFile那么自然可以把SequenceFile转换为MapFile使用mapFile.fix()方法把一个SequenceFile文件转换成MapFile。

(5)mapFile的变种

SetFile

存储writable的键

ArrayFile

键是整型,表示数组中的索引,值为writable

BlooMapFile

使用动态布隆过滤器来检测键是否在map中。

 

(6)面向列的存储方式

按行存储。顺序文件、map文件和Avro数据文件都是面向行的存储方式,即每一行的数据在存储文件中是连续。

按列存储。文件中的行被分割成行的分片,然后每一行的第一列在文件中连续存储。

 

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

https://www.cnblogs.com/bclshuai/p/11380657.html

posted @   一字千金  阅读(565)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示