我正在尝试使用Tika从HDFS上存储的一堆简单的txt文件中提取文本。我的 reducer 中有以下代码,但令人惊讶的是,Tika没有返回任何内容。它在我的本地计算机上运行良好,但是一旦我将所有内容移动到hadoop集群,结果都是空的。
FileSystem fs = FileSystem.get(new Configuration());
Path pt = new Path(Configs.BLOBSTORAGEPREFIX+fileAdd);
InputStream stream = fs.open(pt);
AutoDetectParser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
parser.parse(stream, handler, metadata);
spaceContentBuffer.append(handler.toString());
最后一行将提取的内容附加到StringBuilder,但始终为空。
ps。我的hadoop群集是Azure HDInsight,因此HDFS是Blob存储。
我也尝试了以下代码
Metadata metadata = new Metadata();
BodyContentHandler handler = new BodyContentHandler();
Parser parser = new TXTParser();
ParseContext con = new ParseContext();
parser.parse(stream, handler, metadata, con);
我收到以下错误消息:
Failed to detect the character encoding of a document
最佳答案
如果用户在上传Blob时未指定Content-Type,则默认情况下会将其设置为“application / octet-stream”。
关于hadoop - Tika文本提取在HDFS上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009494/