我必须解析PDF文件,这些文件在Hadoop的Map Reduce程序中的HDFS中。因此,我从HDFS获得PDF文件,作为Input splits,并且必须对其进行解析并将其发送到Mapper类。为了实现这个InputFormat,我已经浏览了这个链接。如何解析这些输入拆分并将其转换为文本格式?
在Hadoop中处理PDF文件可以通过扩展FileInputFormat类来完成。让扩展它的类为WholeFileInputFormat。在WholeFileInputFormat类中,覆盖getRecordReader()方法。现在,每个pdf都将作为单独输入拆分接收。然后可以解析这些单独的拆分来提取文本。此链接提供了一个了解如何扩展FileInputFormat的清晰示例。
这取决于您的拆分。我认为(可能是错误的)你需要将每个PDF作为一个整体来解析它。有Java库可以做到这一点,谷歌知道它们在哪里。
考虑到这一点,当你准备好解析文件时,你需要使用一种方法,将文件作为一个整体。假设你想在映射器中这样做,你需要一个阅读器将整个文件交给映射器。你可以写自己的读者来做这件事,或者可能已经有了。您可以构建一个读取器,扫描PDF的目录,并将每个文件的名称作为键传递到映射器,将内容作为值传递。