我必须在Hadoop的Map Reduce程序中解析HDFS中的PDF文件。所以我从HDFS获取PDF文件为输入拆分,它必须被解析并发送到Mapper类。为了实现这个InputFormat,我已经完成了这个link。如何解析这些输入拆分并将其转换为文本格式?
答案 0 :(得分:6)
在Hadoop中处理PDF文件可以通过扩展FileInputFormat类来完成。让扩展它的类是WholeFileInputFormat。在WholeFileInputFormat类中,您将覆盖getRecordReader()方法。现在每个pdf将作为个人输入分组接收。然后可以解析这些个别分裂以提取文本。这个link提供了一个理解如何扩展FileInputFormat的明显示例。
答案 1 :(得分:1)
这取决于你的分裂。我认为(可能是错的)你需要每个PDF作为一个整体来解析它。有一些Java库可以做到这一点,谷歌知道它们的位置。
鉴于此,当您准备解析文件时,您需要使用一种方法将文件作为一个整体。假设您想在映射器中执行此操作,则需要一个能够将整个文件传递给映射器的读取器。你可以写自己的读者来做这件事,或者也许已经有了一个。您可以构建一个扫描PDF目录的阅读器,并将每个文件的名称作为键传递给映射器,将内容作为值传递。