首页 > 解决方案 > Hadoop:不带分隔符的可变长度文件的 InputFormat

问题描述

我必须处理(通过 Hadoop)不带分隔符的可变长度文件。这些文件的格式是:

(LengthRecord1)(Record1)(LengthRecord2)(Record2)...(LengthRecordN)(RecordN)

记录之间没有分隔符(文件在一行中)。LenghtRecord 和 Record 本身之间没有分隔符(在本文中添加括号只是为了清楚起见)。

我想我既不能使用 TextInputFormat 也不能​​使用 KeyValueTextInputFormat 默认类,因为它们基于使用换行符或回车符来发出信号然后行尾。

所以,我想我必须自定义一个 InputFormat 来加载这些文件。但我不知道该怎么做。

我是否必须重写 createRecordReader() 才能读取记录 n 的长度并识别记录 n 的结尾?如果是这样,我该如何处理拆分可以有半行的事实?

提前致谢。

问候

标签: hadoopmapreducebigdatavariable-length

解决方案


推荐阅读