Hadoop 顺序文件格式

顺序文件提供了二进制key/value对的永久存储DS,也可以作为小文件的容器,也就是把小文件包装起来,获得更高效的存储和处理,比如将整个文件作为一条记录处理

顺序文件:文件头+一条或多条记录

记录的结构与是否启用压缩有关

没有 record length(4 byte)+ key length(4 bytes)+key + value

启用 格式与上面相同 不过除了key值都要按照header定义的codec进行压缩

块(block)压缩:一次对多条记录压缩,压缩效率更高,可利用记录间的相似性    io.seqfile.blocksize  1MB

每个新块的开始都需要插入同步标识 格式如下:

num of records Compressed key len Compressed keys Compressed value len Compressed values

写文件:指定key 和 value 的类型  Sequence.createWriter

读文件:new SequenceFile.Reader     ReflectionUtils.newInstance 分别获得key 和 value 的类型

搜索给定位置:

(1)seek(a) a 是边界位置 否则IOEcxption

(2)通同步点找到边界记录  SequenceFile.Reader sync(a) 方法可以将读取位置定位到a之后的下一个同步点

SeauenceFile.sync()  插入同步点

以文本形式显示顺序文件内容: Hadoop fs -text number.seq | head

排序和合并顺序文件: hadoop jar ***.jar sort -r 1 \

-inputFormat **

-outputFormat **

-outKey

-outValue

file  sorted

相关推荐