我正试图编写一个pig eval函数(udf),使用apachetika从pdf文件中提取文本。但是,每当我尝试运行函数时,函数只向输出写入0或1个字节。如何修复代码?
public class ExtractTextFromPDFs extends EvalFunc<String> {
@Override
public String exec(Tuple input) throws IOException {
String pdfText;
if (input == null || input.size() == 0 || input.get(0) == null) {
return "N/A";
}
DataByteArray dba = (DataByteArray)input.get(0);
InputStream is = new ByteArrayInputStream(dba.get());
ContentHandler contenthandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser pdfparser = new AutoDetectParser();
try {
pdfparser.parse(is, contenthandler, metadata, new ParseContext());
} catch (SAXException | TikaException e) {
e.printStackTrace();
}
pdfText = contenthandler.toString();
//close the input stream
if(is != null){
is.close();
}
return pdfText;
}
}
我使用'c=foreach b generate extracttextfrompdfs(content);'运行代码其中b是pdf,content是bytearray。
暂无答案!
目前还没有任何答案,快来回答吧!