我目前正在编写分布式应用程序,它在 Hadoop MapReduce 的帮助下解析 Pdf 文件。 MapReduce 作业的输入是数千个 Pdf 文件(大部分范围从 100KB 到 ~2MB),输出是一组解析的文本文件。
出于测试目的,最初我使用WholeFileInputFormat
汤姆·怀特 (Tom White) 提供Hadoop。权威指南书,它提供单个文件到单个地图。这对于少量的输入文件来说工作得很好,但是,由于明显的原因,它不能正常地处理数千个文件。需要大约一秒钟才能完成的任务的单个地图效率很低。
因此,我想做的是将多个 Pdf 文件提交到一个 Map 中(例如,将多个文件组合成单个块,该块的 HDFS 块大小约为 64MB)。我发现CombineFileInputFormat
对我的案例很有用。但是我不知道如何扩展该抽象类,以便我可以将每个文件及其文件名作为单个键值记录进行处理。
任何帮助表示赞赏。谢谢!
我认为 SequenceFile 可以满足您的需求:http://wiki.apache.org/hadoop/SequenceFile
本质上,您将所有 PDF 放入一个序列文件中,映射器将接收适合序列文件的一个 HDFS 块的尽可能多的 PDF。创建序列文件时,您将键设置为 PDF 文件名,值将设置为 PDF 的二进制表示形式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)