0

我的应用程序是一个使用 Spark 的 java maven 项目。这是我的 pom 中添加 stanford coreNLP 依赖项的部分:

        <dependency>
            <groupId>edu.stanford.nlp</groupId>
            <artifactId>stanford-corenlp</artifactId>
            <version>3.6.0</version>
        </dependency>
        <dependency>
            <groupId>edu.stanford.nlp</groupId>
            <artifactId>stanford-corenlp</artifactId>
            <version>3.6.0</version>
            <classifier>models</classifier>
        </dependency>

我收到以下错误:

java.lang.NoClassDefFoundError: edu/stanford/nlp/pipeline/StanfordCoreNLP

还有其他依赖项,例如 Spark,并且 dataproc 可以很好地提取它们。现在我添加了 coreNLP,它在我的笔记本电脑上运行良好,但在 google dataproc 中失败了。

4

1 回答 1

2

Spark 类是在 Dataproc 环境中“提供”的,因为它们与其他 Hadoop 相关包(如hadoop-client )一起被视为基本发行​​版的一部分。其他不属于基本发行版的库应使用Maven shade plugin打包为“fatjar”的一部分。

一般来说,这是一个最佳实践指南,因为“提供”的环境应该尽可能不考虑版本依赖关系,这样您就可以根据需要携带自己的 corenlp 版本,而不必担心 Dataproc 环境中的版本冲突,甚至使用您自己的 corenlp 库的分叉版本。

于 2016-03-31T20:15:36.070 回答