Hadoop序列文件
Posted 山间一棵松
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop序列文件相关的知识,希望对你有一定的参考价值。
1. 关于SequenceFile
对于日志文件来说,纯文本不适合记录二进制类型数据,通过SequenceFile为二进制键值对提供了持久的数据结构,将其作为日志文件的存储格式时,可自定义键(LongWritable)和值(Writeable的实现类)的类型。
多个小文件在进行计算时需要开启很多进程,所以采用容器文件SequenceFile按固定大小将多个小文件包装起来,使存储和处理更高效。
2. SequenceFile说明
SequenceFile序列文件
是由序列化K-V对组成,而K和V即hadoop的writable格式
为什么使用序列文件
1、纯文本文件(日志文件)占用了磁盘空间较大
2、将日志文件通过序列文件进行包装,可以获得更好的性能(处理速度和磁盘空间的压缩)
3. SequenceFile特性
1、扁平化文件,包括二进制的k-v(将多行纵向的日志文件变成纵向的文件)
2、可读、可写、可排序
3、有三种压缩方式来压缩k-v对
1)不压缩
2)记录压缩:只压缩value
3)块压缩:将多组k-v聚集成一个“block”然后进行压缩
4、seqFile格式
1)SEQ三字节的头 + 数字(如6)作为版本号
2)key的完整类名
3)value的完整类名
4)boolean值,指定了seqFile是否采用压缩
5)boolean值,指定了seqFile是否采用块压缩
6)压缩编解码器类
7)metadata:源数据
8)sync:同步点
4. SequenceFile的基本操作
待补充
5. SequenceFile的特性
Write//写
Read//读
//seek => 将读取指针手动移动,如果指针不在文件头,则会报错
//getPosition => 得到当前指针位置
//sync => 获取下一个同步点位置
Sort
//sort => 对sequenceFile进行排序
//merge => 合并+排序
在块压缩中,同步点与同步点之间是以块为单位进行存储的,块是多个k-v聚集的产物
查看压缩后的seqfile:
hdfs dfs -text file:///D:/seq/random.seq
以上是关于Hadoop序列文件的主要内容,如果未能解决你的问题,请参考以下文章