我的模块有Spark 2.1.0
和Presto 0.166
。
Spark 2.1.0需要com.faster.xml
版本2.6.5,而Presto 0.166需要2.8.1严格。如何在同一个pom.xml中解决问题,以便我可以在同一个模块中运行它们?
答案 0 :(得分:1)
只需在pom文件中指定com-fasterxml-jackson
的版本即可。此处指定的版本将覆盖Spark 2.1.0
和Presto 0.166
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto...</artifactId>
<version>0.166</version>
</dependency>
由于Spark 2.1.0
可以使用com.fasterxml.jackson 2.8.1
,因此您的模块中不需要2个不同版本的版本。
资源 -
答案 1 :(得分:0)
您不能在来自pom.xml
或com.faster.xml version
的单个Spark 2.1.0
,exclude-dependency Presto 0.166
中使用具有相同依赖关系的多个版本,例如:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 2 :(得分:0)
您是否正在尝试为Presto编写插件?如果是这样,Presto SPI明确仅依赖jackson-annotations
而不是实现。在插件中使用较旧版本的Jackson注释的新版本应该没有问题。 Presto引擎使用的Jackson版本可以并且将与插件使用的版本不同,因为插件被加载到单独的类加载器中。
Presto插件系统旨在具有非常小的依赖性,并允许您使用所需的任何版本的库(因为在将连接器写入使用旧版本库的随机系统时通常是必需的。)