我正在尝试将Spark集成到包含这些依赖项的Maven项目中:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.1.0</version>
</dependency>
但是我还有另一个使用Scala 2.10的依赖项
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.4</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.10</artifactId>
<version>2.2.1</version>
</dependency>
所以我得到运行时异常,因为Spark无法找到Scala 2.11函数,因为项目正在部署2.10。在只有Spark依赖项的独立项目中,一切正常。
如何隔离Spark工件,以便他们可以使用Scala 2.11并且不会干扰其他库?
答案 0 :(得分:0)
是否可以将您的第一个应用程序重新分解为SpringBoot应用程序并将其作为微服务托管?您可以使用PCF或PWS。完成后,您的第二个应用程序(似乎是您的主要项目)需要使用第一个应用程序的相关公开端点。通过这种方法,您将最终打破巨石&#34;两个松散耦合的微服务相互交谈,以避免应用程序踩到彼此的脚,这似乎是现在的问题。
似乎有一些工具可以将YARN托管的Hadoop集群,Spring框架和Scala / Spark集中在一个平台上。您可以开始查看文档https://docs.spring.io/spring-hadoop/docs/current/reference/html/springandhadoop-spark.html。
我假设您在Hadoop集群上编写应用程序,因为您正在讨论调用/使用spark实用程序的Scala项目。
你可以试一试。需要在代码级别进行一点点重构,但这两个应用程序的体系结构将具有可扩展性和可维护性,以避免将来出现所有和任何类型的依赖性问题。