我想SequenceFile从客户端应用程序中读取来自 HDFS 的特定内容。我可以通过使用来做到这一点SequenceFile.Reader,它工作正常。但是是否也可以通过分析抛出的s来检查文件是否是其他文件?SequenceFileIOException
1 回答
2
我翻遍了 Hadoop 文档、源代码和网络并找到了一个解决方案:SequenceFile从一个四字节标题开始读取文件的版本SEQn在哪里n(一个正数,一字节数字,但从不大于 6)。因此,对于检查,可以执行以下操作:
FSDataInputStream正常打开文件FileSystem.open- 将前三个字节读取为 ASCII 字符串
- 检查他们是否说
SEQ- 如果没有,不SequenceFile - 检查下一个字节是否小于等于6,大于0,如果是->
SequenceFile
这应该是 SequenceFile 中的一个实用方法,例如SequenceFile.isSequenceFile
编辑:我发布了一个关于这个的 JIRA:HDFS-7378
于 2014-11-07T12:30:13.557 回答