我有大量专有二进制格式的输入文件。我需要将它们变成行以进行进一步处理。每个文件必须由外部二进制文件一次性解码(即文件不得连接或拆分)。
我知道的选项:
- 强制单个文件加载,扩展 RecordReader,使用 DistributedCache 通过 RecordReader 运行解码器
- 强制单个文件加载,RecordReader 返回单个文件,使用 hadoop 流解码每个文件
然而,看起来 [2] 不起作用,因为 pig 在将记录发送到 STREAM 运算符之前会连接它们(即它将发送多条记录)。
[1] 似乎可行,只是多做一点工作。
有没有更好的办法?