2

我在 spring 和 spark 工作 OLAP,然后我发现 spring 3.12 使用 cglib 2.2.2,spark 使用 3.0,那么我怎样才能同时执行它们呢?

一些配置可以用 maven 完成吗?

    <dependency>
        <groupId>com.commons.algorithm</groupId>
        <artifactId>simulator</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency> spring works with this
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>2.2.2</version>
    </dependency>
    <!--dependency> spark requires this
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.0</version>
    </dependency-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>
    <dependency> 
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.9.3</artifactId>
        <version>0.8.0-incubating</version>
        <type>jar</type>
    </dependency>

代码:

@SparkParameter(taskJarLocation = {"analysis/1.0/analysis-1.0.jar"})
@SparkCassandraParameter (keySpace="commons10", port = 9160)
@RunWith(value = Parameterized.class)
public class PerformanceExecutor {

    private Simulator simulator;
    private Analysis analysis;
    private Algorithm algorithm;

    public PerformanceExecutor(Simulator simulator, Analysis analysis, Algorithm algorithm){
        this.simulator = simulator;
        this.analysis = analysis;
        this.algorithm = algorithm;
    }

    @Parameters
    public static Collection<Object[]> data() throws ClassNotFoundException, IOException {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(TestConfiguration.class);
        CommonDao commonDao = ctx.getBean(CommonDao.class);
        OpinionDao opinionDao = ctx.getBean(OpinionDao.class);
        DataBaseAdaptor adaptor = new DataBaseAdaptorImpl(opinionDao, commonDao, 1);
        SparkRddHelper helper = new SparkRddHelper();
        Object[][] data = new Object[][]{{new RegisterSimulation(), new CommonRelationAnalysisTask(helper), new CommonRenewAlgorithm(adaptor)}};
        return Arrays.asList(data);
    }

    @Test
    public void pushTest() throws Exception {
        simulator.start("src/main/resources/userCreated/users2.txt", 10); // <-- spring required
        analysis.runAnalysis(); // <-- spark required
        algorithm.process();
    }
}
4

1 回答 1

1

如果 cglib 3 向后兼容 2,您可以使用以下命令排除 Spring 对 cglib 的依赖:

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>3.1.2.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupId>cglib</groupId>
          <artifactId>cglib</artifactId>
          <version>2.2</version>
        </exclusion>
      </exclusions> 
</dependency>

因此,您的 pom.xml 将如下所示:

<dependency>
    <groupId>com.commons.algorithm</groupId>
    <artifactId>simulator</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.0</version>
</dependency>
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>3.1.2.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupId>cglib</groupId>
          <artifactId>cglib</artifactId>
          <version>2.2.2</version>
        </exclusion>
      </exclusions> 
</dependency>
<dependency> 
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.9.3</artifactId>
    <version>0.8.0-incubating</version>
    <type>jar</type>
</dependency>
于 2013-12-23T09:55:10.467 回答