【问题标题】:Tika text extraction not working on HDFSTika 文本提取不适用于 HDFS
【发布时间】: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


【解决方案1】:

如果用户在上传blob时没有指定Content-Type,默认设置为“application/octet-stream”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2018-09-16
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多