spark和httpclient依赖

时间:2016-02-29 23:42:25

标签: java maven apache-spark

我有一个在YARN中运行的spark应用程序。应用程序中的一个依赖项需要httpclient 4.5.1。我明确地将其作为对我的pom的依赖。  但是,当我在YARN中运行应用程序时。我得到以下stacktrace

 Factory method 'createClient' threw exception; nested exception is java.lang.NoSuchMethodError: org.apache.http.impl.conn.PoolingHttpClientConnectionManager.setValidateAfterInactivity(I)V
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123)

看起来像Spark的依赖问题。有什么办法可以覆盖httpclient吗?

2 个答案:

答案 0 :(得分:1)

我使用的解决方法是使用标志在YARN中运行spark应用程序    spark.executor.userClassPathFirst =真

这解决了我的问题。

答案 1 :(得分:0)

似乎这种方法was added in httpclient 4.4。运行报告为java.lang.NoSuchMethodError的事实意味着您的类正在Spark平台上找到此类的另一个版本(PoolingHttpClientConnectionManager)。也许另一个版本的Apache HTTP Client与Spark捆绑在一起?

我建议您使用Maven shade plugin创建一个自包含的应用程序,以便它(希望)可以使用它所需的类和JAR。