- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 Tika 中处理一堆文件。文件数量以千计,所以我决定构建一个文件 RDD,让 Spark 分配工作负载。不幸的是,我遇到了多个 NoClassDefFound
异常。
这是我的 sbt 文件:
name := "TikaFileParser"
version := "0.1"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.1" % "provided"
libraryDependencies += "org.apache.tika" % "tika-core" % "1.11"
libraryDependencies += "org.apache.tika" % "tika-parsers" % "1.11"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.7.1" % "provided"
这是我的程序集.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.1")
这是源文件:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.input.PortableDataStream
import org.apache.tika.metadata._
import org.apache.tika.parser._
import org.apache.tika.sax.WriteOutContentHandler
import java.io._
object TikaFileParser {
def tikaFunc (a: (String, PortableDataStream)) = {
val file : File = new File(a._1.drop(5))
val myparser : AutoDetectParser = new AutoDetectParser()
val stream : InputStream = new FileInputStream(file)
val handler : WriteOutContentHandler = new WriteOutContentHandler(-1)
val metadata : Metadata = new Metadata()
val context : ParseContext = new ParseContext()
myparser.parse(stream, handler, metadata, context)
stream.close
println(handler.toString())
println("------------------------------------------------")
}
def main(args: Array[String]) {
val filesPath = "/home/user/documents/*"
val conf = new SparkConf().setAppName("TikaFileParser")
val sc = new SparkContext(conf)
val fileData = sc.binaryFiles(filesPath)
fileData.foreach( x => tikaFunc(x))
}
}
我正在运行它
spark-submit --driver-memory 2g --class TikaFileParser --master local[4]
/path/to/TikaFileParser-assembly-0.1.jar
并获取 java.lang.NoClassDefFoundError: org/apache/cxf/jaxrs/ext/multipart/ContentDisposition
这是解析器的依赖项。出于好奇,我将包含此类的 jar 添加到 Spark 的 --jars 选项并再次运行。这次我得到了一个新的NoClassDefFoundError
(记不清是哪一个了,也是Tika的依赖)。
我已经在此处 ( Apache Tika 1.11 on Spark NoClassDeftFoundError ) 发现了一个类似的问题,解决方案是构建一个 fat jar。但我想知道是否有其他方法可以解决依赖问题?
顺便说一句:我在没有 Spark 的情况下尝试了这个片段(所以只需使用一个带有文件名的数组和一个 foreach 循环并相应地更改 tikaFunc 签名。我在没有任何参数的情况下运行它并且它运行得很好。
编辑:更新了现在用于 sbt 程序集的片段。
最佳答案
I already found a similar problem here (Apache Tika 1.11 on Spark NoClassDeftFoundError) where the solution was to build a fat jar. But I would like to know if there is any other way so solve the dependency issues?
找到所有依赖项并将它们添加到--jars
。你可以用 https://github.com/jrudolph/sbt-dependency-graph 来做.但我不明白为什么你更喜欢这个而不是构建一个将它们组合在一起的 jar 。
I ran it without any arguments and it worked perfectly.
SBT 已经确保您拥有类路径上的所有依赖项,但 Spark 不使用 SBT 来运行您的程序。
关于scala - 在 Spark 上运行 Tika 的类路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34293027/
我运行一个未修改的 Apache tika-server 1.22 的 JAX-RS 实例,并将其用作 HTTP 端点服务,我将文件发布到(主要是 Office、PDF 和 RTF)并通过 HTTP
我们当前的 Scala 代码与 Tika 1.13+ 一起运行,我们使用现已弃用的 LanguageIdentifier 代码,如下所示: import org.apache.tika.languag
使用Apache Tika提取JPEG图片元数据时遇到如下错误 java.lang.NoSuchMethodError: com.adobe.xmp.properties.XMPPropertyInf
我在网上找到了以下示例源代码,它的名称为 MyFirstTika.java,但我无法确定使用哪个版本的 Tika 来编译它。或者 Tika 的所有版本都兼容吗? The code is linked
我正在使用 Tika 阅读 PDF,并且我的代码直到昨天才正常工作。现在,当我运行相同的代码时,我收到错误,并且显然 Tika 找不到 Tika 服务器 jar 文件。我正在使用以下代码来阅读 PDF
Apache Tika 服务器提供了一个 Rest API 来从文档中提取文本。也可以设置特定的请求 header 参数,例如 X-Tika-PDFOcrStrategy。例如: $ curl -T
我在评论中添加了RTF文件。在文本编辑器中复制以下文本并另存为RTF格式。 BodyContentHandler handler = new BodyContentHandler(); Metadat
我想在 Maven 项目中使用 Tika 作为依赖项,从文件中提取元数据。当我使用 mvn exec:java 运行该类时它工作正常,但使用 java -cp 运行该类时它工作正常,所以我怀疑这是一个
对于 docx 文件,我检索 application/x-tika-ooxml,但我应该检索 application/vnd.openxmlformats-officedocument.wordpro
对于 docx 文件,我检索 application/x-tika-ooxml,但我应该检索 application/vnd.openxmlformats-officedocument.wordpro
我正在尝试使用 tika 包来解析文件。 Tika 已成功安装,tika-server-1.18.jar 使用 cmd 中的代码运行 Java -jar tika-server-1.18.jar 我在
我使用 jersey 框架在 java 中编写了一个 Web 服务,该框架使用了我的 apache tika 包装器。该包装器包装了 tika-app-1.7.jar。我的问题是什么是最好的方法:包装
我正在尝试在 Nutch 中启用 Tika 的 BoilerpipeContentHandler 解析器,以从网页中提取文章文本。为此,我配置了 tika-config.xml 以排除 HTMLPar
我正在尝试解析一些包含工程图纸的 PDF 文件以获取文件中的文本数据。我尝试将 TIKA 用作 python 的 jar,并将其与 jnius 包一起使用(在此处使用本教程: http://www.h
在 Tika 的网站上,它说(关于 tika-app-1.2.jar)它可以在服务器模式下使用。有谁知道如何在该服务器运行后发送文档并从该服务器接收解析的文本? 最佳答案 Tika 支持两种“服务器”
我正在使用 Tika 解析大型 pdf 和 word 文档,但我收到以下错误消息。 Your document contained more than 100000 characters, and s
我正在使用 Apache Tika 从 PDF 文件获取内容。 当我运行它时,出现以下错误。我没有在任何地方看到这个错误的记录,这只是一个糟糕的惊喜。 org.apache.tika.sax.Writ
我知道 Tika 有一个非常好的包装器,它让我可以像这样从解析文件中获取一个 Reader: Reader parsedReader = tika.parse(in); 但是,如果我使用它,我无法指定
我阅读了一些文章,认为服务器模式下的 tika 可以提高性能。有人能解释一下怎么做吗?我们能否在 Java 应用程序中实现类似的功能以获得更好的性能? Running tika in server m
在我们的应用程序中,我们使用 Apache Tika 处理文件。但是有一些文件(例如*.mov,*.mp4)Tika无法处理并在用户的Temp文件夹中留下相应的*.tmp文件。经过一些研究,我发现这是
我是一名优秀的程序员,十分优秀!