SequenceFile & MapFile
来源:互联网 发布:淘客群管软件 编辑:程序博客网 时间:2024/05/15 05:36
SequenceFile
Hadoop的SequenceFile适合记录二进制类型的数据,为二进制key - Value对提供了一个持久数据结构
SequenceFile作为日志文件的存储格式时,使用者可以直接选择Key和Value
SequecneFile也可以作为小文件的容器,将小文件进行包装,从而获得更高效率的存储和处理
SequenceFile的写操作
命令行查看内容:
- 1
- 2
- 1
- 2
SequenceFile的读操作
SequenceFile的格式
SequenceFile是一种顺序文件的格式,可以进行切割操作(根据同步点进行切割)
每一行是k-v对
格式:head + record
record格式:SEQ + version + key class + value class
SequenceFile 有三种压缩态:
Uncompressed:未进行压缩的状
record compressed:对每一条记录的value值进行了压缩(文件头中包含上使用哪种压缩算法的信息) key没有被压缩
block compressed:指一次性压缩多条记录,当数据量达到一定大小后,将停止写入进行整体压缩,整体压缩的方法是把所有的keylength,key,vlength,value 分别合在一起进行整体压缩,块的压缩效率要比记录的压缩效率高
指定同步点写入SequenceFile
不使用压缩算法写入SequenceFile
使用压缩算法写入SequenceFile
考察SequenceFile默认情况下使用的压缩态和压缩编解码器
SequenceFile的读取方式有两种,第一种是调用seek()方法进行读取该方法将指针指向文件中的指定位置;第二种是通过同步点查找记录边界,对文件进行读取。通过sync(long position)方法可以将读取位置定位到position之后的下一个同步点。顺序文件在读取失败之后,会有纠错机制,而这种机制就是根据同步点sync进行纠错的
使用seek()读取SequenceFile
使用sync(long position)读取SequenceFile
MapFile
MapFile是已经排过序的SequenceFile,它有索引,所以可以按键查找
格式:index + data
在写入过程中,必须要求Key按照大小顺序添加的。如果不按照大小顺序写入,会报错
index:索引和偏移量的映射 可以设置间隔值,默认128;index文件包含一部分键和data文件中键到其偏移量的映射;通过配置文件可以进行设置io.map.index.interval,可以进行折半查找(更快的搜索海量数据)
data: key - value形式;可以寻找与指定key最近的key,可以设置是否向前寻找
举例:
index 每隔128个键做了一个偏移 1-128 129-257 257-385….
1
129
257
…
index中可以设置键的大小:
读取时可以进行折半查找,用这种方法进行按键查找效率高
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
MapFile的两种写入方式
读取MapFile文件时可以采用seek()方法进行定位读取,seek()方法根据key值进行查找,查找方法使用了binarySearch,该方法存在于MapFile$Reader.class中,实现如下:
MapFile也可以使用getCloset()方法进行读取,返回的是与指定键匹配最接近的Key
MapFile的两种读取方式
MapFile的变形
Hdoop中实现了MapFile的几种变形:
SetFile:用于存储Writable键的集合,键必须按照排好的顺序添加,无Value值
ArrayFile:Key是一个整型,Value是一个Writable类型的值
SequenceFile向MapFile的转变
MapFile相当于加有索引并且进行过排序的SequenceFile,因此可以通过MapFile的fix()方法,对SequenceFile进行重建索引,从而完成转变
- SequenceFile & MapFile
- SequenceFile & MapFile
- SequenceFile与MapFile
- HDFS之SequenceFile和MapFile
- HDFS之SequenceFile和MapFile
- HDFS之SequenceFile和MapFile
- HDFS之SequenceFile和MapFile
- HDFS之SequenceFile和MapFile
- HDFS之SequenceFile和MapFile
- Hadoop中的SequenceFile和MapFile
- MapReduce中的SequenceFile和MapFile
- HDFS之SequenceFile和MapFile
- HDFS之SequenceFile和MapFile
- Hadoop HDFS之SequenceFile和MapFile
- Hadoop HDFS之SequenceFile和MapFile
- Hadoop HDFS之SequenceFile和MapFile
- Hadoop HDFS之SequenceFile和MapFile
- mapreduce中的sequenceFile类,MapFile解析
- 数据库修改预约数据后,软件无法刷新,需要退出pl/sql,
- oracle存储过程(procedure)
- tensorsor快速获取所有变量,和快速计算L2范数
- 单例模式的几种写法
- DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution--阅读笔记
- SequenceFile & MapFile
- 第八周 项目一 建立顺序串的算法库
- 海尔金控供应链金融平台负责人崔涛:深入产业打造在线供应链金融
- vs2010 无法将 复制到 超出了重试计数10
- 天创信用总经理李文贤:金融科技加速金融变革
- 华为在广西钦州建云计算平台,智能交互SaaS协会正式在京成立 | 大数据24小时
- fastjson JSONObject 怎么设置成有序
- Centos7 用户登录失败N次后锁定用户禁止登陆
- java 字节流和字符流的区别