该任务使用hadoop mapreduce解析许多pdf。我认为整个过程应该只在映射器中。从哪儿开始?映射器必须如何看?
答案 0 :(得分:0)
同意你可以在 Mapper 部分完成解析过程,而 Reducer 部分只需输出结果而无需任何聚合计算。
使用广泛使用的MapReduce框架 Hadoop 作为示例,您需要使用Writable定义自己的数据类型,假设将其命名为MyPdfFile
,每个MyPdfFile
instance表示PDF文件,它包含输入的PDF文件内容和其他信息。 MyPdfFile
应包含将PDF文件内容转换为文本的方法getConvertedText
,关于如何通过Java处理PDF文件,请尝试Apache PDFBox。
然后Mapper
可能看起来像:
class PdfToTxtMapper extends Mapper<Text, MyPdfFile, Text, Text> {
@Override
public void map(Text inputKey, PdfFile inputValue, Context context) throws IOException, InterruptedException {
Text outputKey = new Text(inputKey);
Text outputVal = inputValue.getConvertedText(inputValue);
context.write(outputKey, outputVal);
}
}
希望它有所帮助。