Hadoop 序列文件中的压缩
Posted
技术标签:
【中文标题】Hadoop 序列文件中的压缩【英文标题】:Compression in Hadoop Sequence File 【发布时间】:2011-11-29 09:40:24 【问题描述】:我有一些关于 hadoop 顺序文件的基本问题。
1) 默认压缩编解码器将文件压缩到什么程度?
2) 当我读取此文件并将其内容转储到文本文件时,我有 100 MB 的 hadoop 序列文件,我观察到的文本文件大小约为 1GB(可以吗?)
3)读取序列文件时"syncSeen()"的意义是什么? “寻求(多头头寸)” ?如果我在阅读时不使用这些调用有什么问题吗? 关于如何使用这些方法的任何示例?
【问题讨论】:
【参考方案1】:SequenceFile.Reader#seek 会将阅读器定位在 SequenceFile 中的给定点。
根据Hadoop:The Definitive Guide
同步点是流中的一个点,可用于在读取器“丢失”时与记录边界重新同步 - 例如,在寻找流中的任意位置之后。同步点由 SequenceFile.Writer 记录,在写入序列文件时,每隔几条记录插入一个特殊条目来标记同步点。这样的条目足够小,只会产生适度的存储开销——不到 1%。同步点始终与记录边界对齐。
SequenceFile.Reader#syncseen 将在读取 SequenceFile 时判断是否已通过同步标记。
【讨论】:
读取hadoop序列文件时是否需要使用syncseen?如果我们不使用它可能会遇到什么问题? 我很好奇记录如何与块边界对齐,这对我来说是最重要的。有没有一种机制可以确保这一点?以上是关于Hadoop 序列文件中的压缩的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop 解压缩目录中的文件并将每个文件单独移动到另一个文件夹