2015-08-21 3 views
1

Я получаю NoSuchMethodError, когда приложение Spark выполняет val sc = new SparkContext("spark://spark01:7077", "Request Executor"). Я составляю приложение Spark с версией 1.3.1 и Scala версии 2.10.4. Кластер Spark скомпилирован с 1.3.1, а также с той же версией Scala.NoSuchMethodError с SparkContext

От взгляда на источник искры, getTimeAsSeconds не существует в Utils.scala до Spark 1.4. Почему он пытается вызвать метод, который не существует в используемой версии?

Вот зависимости от моего pom.xml:

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>1.3.1</version> 
</dependency> 

<dependency> 
    <groupId>org.scala-lang</groupId> 
    <artifactId>scala-library</artifactId> 
    <version>2.10.4</version> 
</dependency> 
<dependency> 
    <groupId>org.scala-lang</groupId> 
    <artifactId>scala-compiler</artifactId> 
    <version>2.10.4</version> 
</dependency> 
<dependency> 
    <groupId>org.scala-lang</groupId> 
    <artifactId>scala-reflect</artifactId> 
    <version>2.10.4</version> 
</dependency> 

<dependency> 
    <groupId>com.twitter</groupId> 
    <artifactId>util-eval_2.10</artifactId> 
    <version>6.26.0</version> 
</dependency> 

<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>19.0-rc1</version> 
</dependency> 

<dependency> 
    <groupId>org.jvnet.jaxb2_commons</groupId> 
    <artifactId>jaxb2-basics-runtime</artifactId> 
<version>0.7.0</version> 
</dependency> 

<!-- Jackson JSON Library --> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.4.4</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.4.4</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId> 
    <version>2.4.4</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.module</groupId> 
    <artifactId>jackson-module-jaxb-annotations</artifactId> 
    <version>2.4.4</version> 
</dependency> 

<dependency> 
    <groupId>com.fasterxml.jackson.dataformat</groupId> 
    <artifactId>jackson-dataformat-xml</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.woodstox</groupId> 
    <artifactId>woodstox-core-asl</artifactId> 
    <version>4.1.4</version> 
</dependency> 

<dependency> 
    <groupId>uk.org.simonsite</groupId> 
    <artifactId>log4j-rolling-appender</artifactId> 
    <version>20131024-2017</version> 
</dependency> 

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.12</version> 
</dependency> 

<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-server</artifactId> 
    <version>9.3.1.v20150714</version> 
</dependency> 

<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-servlet</artifactId> 
    <version>9.3.1.v20150714</version> 
</dependency> 

<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-webapp</artifactId> 
    <version>9.3.1.v20150714</version> 
</dependency> 

<dependency> 
    <groupId>org.antlr</groupId> 
    <artifactId>antlr4-runtime</artifactId> 
    <version>4.5</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-solrj</artifactId> 
    <version>5.2.1</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-core</artifactId> 
    <version>5.2.1</version> 
    <exclusions> 
    <exclusion> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-jdk14</artifactId> 
    </exclusion> 
    <exclusion> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-util</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

ли что-то в моих зависимости вызывает у меня компилировать с Спарком 1.4?

StackTrace:

java.lang.NoSuchMethodError: org.apache.spark.network.util.JavaUtils.timeStringAsSec(Ljava/lang/String;)J 
     at org.apache.spark.util.Utils$.timeStringAsSeconds(Utils.scala:1027) 
     at org.apache.spark.SparkConf.getTimeAsSeconds(SparkConf.scala:194) 
     at org.apache.spark.util.AkkaUtils$.org$apache$spark$util$AkkaUtils$$doCreateActorSystem(AkkaUtils.scala:68) 
     at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:54) 
     at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:53) 
     at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:1991) 
     at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:166) 
     at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:1982) 
     at org.apache.spark.util.AkkaUtils$.createActorSystem(AkkaUtils.scala:56) 
     at org.apache.spark.rpc.akka.AkkaRpcEnvFactory.create(AkkaRpcEnv.scala:245) 
     at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:52) 
     at org.apache.spark.SparkEnv$.create(SparkEnv.scala:247) 
     at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:188) 
     at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:267) 
     at org.apache.spark.SparkContext.<init>(SparkContext.scala:424) 
     at org.apache.spark.SparkContext.<init>(SparkContext.scala:155) 
     at com.scala.analytics.RequestExecutor$.executeRequest(RequestExecutor.scala:23) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:816) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1113) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1047) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) 
     at org.eclipse.jetty.server.Server.handle(Server.java:517) 
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302) 
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) 
     at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:238) 
     at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) 
     at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:57) 
     at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) 
     at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) 
     at java.lang.Thread.run(Thread.java:745) 
+0

Можете ли вы проверить, какой JAR используется при запуске приложения? Похоже, ваша искра действительно 1.4.0. если вы используете Linux, используйте 'find. -name * .jar | grep assembly' (если вы скомпилировали код, он должен находиться под './assembly/target/scala-xxx') – Bacon

+0

Яркая вспышка:' spark-assembly-1.3.1-hadoop2.6.0.jar'. –

+0

Откуда у вас исходный код? прямо из github или с сайта? Можете ли вы показать команду, которую вы использовали для компиляции Spark? – Bacon

ответ

1

Оказывается, это была глупая ошибка. Я запускаю это приложение на другой машине, поэтому каждый раз, когда компилирую, я копирую свой целевой каталог. Тем не менее, я никогда не очищал свой целевой каталог на удаленной машине, поэтому у меня была старая банка с Spark 1.4.0, сидящая там, которую я использовал в какой-то момент. Каждый раз, когда мое приложение запускалось, оно искало банку Spark и использовало фразу 1.4.0 вместо флага 1.3.1, которая также находится в каталоге. Решение было просто удалить старую (1.4.0) банку.

Смежные вопросы