我想从客户端应用程序从HDFS读取特定的SequenceFile
。我可以使用SequenceFile.Reader
做到这一点,并且效果很好。但是通过分析抛出的SequenceFile
s是否还可以检查文件是否是IOException
呢?
最佳答案
我仔细研究了Hadoop文档,源代码和Web,找到了一个解决方案:SequenceFile
s以一个四字节的 header 开头,读取SEQn
,其中n
是文件的版本(一个正数,一个字节的数字,但不得大于6)。因此,对于检查,可以执行以下操作:
FSDataInputStream
作为普通的FileSystem.open
打开文件SEQ
-如果不是,则不输入SequenceFile
SequenceFile
这应该是SequenceFile中的实用程序方法,例如
SequenceFile.isSequenceFile
编辑:我发布了关于此JIRA:HDFS-7378