【发布时间】:2015-07-15 01:45:44
【问题描述】:
我正在尝试使用 Tika 从存储在 HDFS 上的一堆简单 txt 文件中提取文本。我的减速器中有以下代码,但令人惊讶的是 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,但它始终为空。
附言我的 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
【问题讨论】:
-
您是否确保将所有 Apache Tika jar 及其依赖项发送到您的 Hadoop 节点,并正确地将它们放在您的工作的类路径中?
-
是的,一切看起来都很好。我没有收到任何错误消息。唯一的问题是解析器不返回任何内容作为提取的内容。编码可能有问题吗?因为文件存储在 HDFS(Azure Blob 存储)上?
-
检查您是否已注册所有解析器(向 AutoDetectParser 询问子解析器),并尝试仅进行独立检测并检查其类型是否正确
-
你能解释更多吗,我不太明白。
-
我尝试了不同的方法并收到一条错误消息,您能否查看我更新的帖子可能会有所帮助。
标签: hadoop azure-blob-storage apache-tika