所以我有一段代码可以将记录索引到弹性中。此代码使用 spark 和 hadoop 运行。 我刚刚将 Elasticsearch 升级到 2.3.1。 当我在本地机器上运行我的代码时,它运行良好。 当我尝试使用 spark 提交作业运行它时,我得到了
java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
在谷歌搜索后,我意识到问题出在 Guava 上,所以在我的 pom.xml 中我只是把
com.google.guava Guava 19.0 在 dependencyManagement 下。
但错误仍然发生,所以我猜 spark (1.6) 也在使用旧版本的 guava,但我找不到在哪里以及如何解决它... 我还尝试制作一个新的 jar 来遮蔽 elastic-search 2.3.1 + com.google.common 并使用它,但也没有用
最佳答案
How to resolve the conflict between 11.0.2 and 16.0 of guava when using yarn, spark and spark-cassandra-connector?中提出的解决方案工作完美。您只需将 spark.driver.userClassPathFirst
的值设置为 true
。
关于hadoop - 在 Spark 作业上使用 ElasticSearch 时 Guava jar 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120174/