hadoop - 在 Spark 作业上使用 ElasticSearch 时 Guava jar 冲突

标签 hadoop elasticsearch apache-spark hadoop-yarn

所以我有一段代码可以将记录索引到弹性中。此代码使用 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/

相关文章:

amazon-web-services - 在 Apache Spark 中。如何设置worker/executor的环境变量?

hadoop - Hadoop连接被拒绝

mysql - 一种从Mysql读取表数据到Pig的方法

elasticsearch - 无法在 Windows 上使用单播启动两个 ElasticSearch 节点

java - Aerospike Java Spark 连接器

java - 分析异常: Reference 'count' is ambiguous

hadoop - sqoop是否会将临时数据溢出到磁盘

hadoop - 如何为Amazon ec2计算机分配静态主机名或IP地址?

ruby-on-rails - 从模型重新索引后 Searchkick 索引为空

elasticsearch - IllegalArgumentException-仅支持<= 256个有限字符串