自定义二进制格式的自定义记录读取器

vom3gejh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(288)

在hadoopv2中,我需要创建一个 RecordReader 和/或 InputFormat 基于存储在hdfs中的一些大型二进制格式。这些文件基本上是具有以下结构的串联记录:

4-byte constant string "FOOO"
8-byte integer record length n1
n1-byte rest of the record

4-byte constant string "FOOO"
8-byte integer record length n2
n2-byte rest of the record

4-byte constant string "FOOO"
8-byte integer record length n3
n3-byte rest of the record

4-byte constant string "FOOO"
8-byte integer record length n4
n4-byte rest of the record
...

为了知道所有的边界点,我需要扫描整个文件。
有没有自定义读卡器/格式的例子来处理这样的结构?
我希望避免预先计算所有的分割点,我宁愿按Map程序的需要在每个记录中进行流式处理,这样我就不必浪费数据的循环。但是,即使我必须预先计算分割点,我也不知道如何编写自定义分割器,所以如果可能的话,我也希望能有一个指向这样的东西的指针。
需要注意的一点是:每条记录的“有效负载”本质上是任意二进制数据,并且可能包含 "FOOO" 据我所知,里面有4字节的常量。因此,如果输入拆分落在某个记录中间的某个位置,我就不必前进到下一个示例 "FOOO" 查找下一条记录,也不是管理记录查找的有效方法,因为这意味着扫描所有数据,而不仅仅是头并查找必要的位置。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题