MapFile

HDFS SequenceFile MapFile

六眼飞鱼酱① 提交于 2019-12-06 09:54:16
一、SequenceFile SequenceFile的存储类似于Log文件,所不同的是Log File的每条记录的是纯文本数据,而SequenceFile的每条记录是可序列化的字符数组。 SequenceFile可通过如下API来完成新记录的添加操作: fileWriter.append(key,value) 可以看到,每条记录以键值对的方式进行组织,但前提是Key和Value需具备序列化和反序列化的功能 Hadoop预定义了一些Key Class和Value Class,他们直接或间接实现了Writable接口,满足了该功能,包括: Text 等同于Java中的String IntWritable 等同于Java中的Int BooleanWritable 等同于Java中的Boolean . . 在存储结构上,SequenceFile主要由一个Header后跟多条Record组成,如图所示: Header主要包含了Key classname,Value classname,存储压缩算法,用户自定义元数据等信息,此外,还包含了一些同步标识,用于快速定位到记录的边界。 每条Record以键值对的方式进行存储,用来表示它的字符数组可依次解析成:记录的长度、Key的长度、Key值和Value值,并且Value值的结构取决于该记录是否被压缩。 数据压缩有利于节省磁盘空间和加快网络传输