相关疑难解决方法(0)

httpclient版本和Apache Spark之间的冲突

我正在使用Apache Spark开发Java应用程序.我用这个版本:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>1.2.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,存在过渡依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我将我的应用程序打包到一个JAR文件中.使用时在EC2实例上部署它时spark-submit,我收到此错误.

Caused by: java.lang.NoSuchFieldError: INSTANCE
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.getPreferredSocketFactory(ApacheConnectionManagerFactory.java:87)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:65)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:58)
    at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:50)
    at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:38)
Run Code Online (Sandbox Code Playgroud)

此错误清楚地表明SparkSubmit已加载相同Apache httpclient库的旧版本,因此出现此冲突.

解决这个问题的好方法是什么?

出于某种原因,我不能在我的Java代码上升级Spark.但是,我可以轻松地使用EC2群集.是否可以在具有更高版本的1.6.1版本的集群上部署我的Java代码?

java amazon-ec2 apache-httpclient-4.x apache-spark

5
推荐指数
1
解决办法
3966
查看次数

sbt- assembly:重命名具有合并冲突的类(阴影)

我如何告诉 sbt-Assembly 保留其现有的合并/重复数据删除规则,除非两个.class文件冲突、重命名(并发出警告以便我了解)?

这与 Maven 中使用的阴影策略相同吗?

sbt sbt-assembly

3
推荐指数
1
解决办法
1902
查看次数