我有一个简单的代码,可以创建Hadoop的Sequence文件。每个代码运行它在工作目录中留下两个文件:
mySequenceFile.txt
.mySequenceFile.txt.crc
每次运行后,两个文件的大小保持不变。但是crc文件内容变得不同了!
这是一个错误还是预期的行为?
答案 0 :(得分:0)
这是令人困惑的,但预期的行为
根据{{3}},每个序列文件都有一个 sync-block ,其长度为16个字节。在块压缩的序列文件中的每个记录之后,以及在未压缩或记录压缩的序列文件中的一些记录或一个非常长的记录之后,同步块重复。
问题是, sync-block 是某种随机值。它写在标题中,因此这是读者识别它的方式。它在一个序列文件中保持相同,但它可以(实际上)从一个序列文件到另一个不同。
因此文件在逻辑上是相同的,但二进制不同。 CRC是二进制shecksum,所以它在两个文件之间也不同。
我还没有找到任何手动设置此同步块的方法。如果有人找到了,请在这里写下来。