2015-06-09 1 views
0

Я написал основное искровое приложение, которое считывает и записывает на Кассандру после этого руководства (https://github.com/datastax/spark-cassandra-connector/blob/master/doc/0_quick_start.md)Ошибки запуск искрового приложения с использованием искровой Кассандры разъема

Это то, что .sbt для этого приложения выглядит следующим образом:

name := "test Project" 

version := "1.0" 

scalaVersion := "2.10.5" 

libraryDependencies ++= Seq(
     "org.apache.spark" %% "spark-core" % "1.2.1", 
     "com.google.guava" % "guava" % "14.0.1", 
     "com.datastax.spark" %% "spark-cassandra-connector" % "1.2.1", 
     "org.apache.cassandra" % "cassandra-thrift" % "2.0.14", 
     "org.apache.cassandra" % "cassandra-clientutil" % "2.0.14", 
     "com.datastax.cassandra" % "cassandra-driver-core" % "2.0.14" 
) 

Как вы можете видеть версию Спарк 1.2.1 (а не 1.3.1, как много других вопросов), но когда я запускаю это приложение с помощью искрового отправить мне по-прежнему работать в ошибку:

WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, abcdev26): java.lang.NoSuchMethodError: org.apache.spark.executor.TaskMetrics.inputMetrics_$eq(Lscala/Option;)V 
     at com.datastax.spark.connector.metrics.InputMetricsUpdater$.apply(InputMetricsUpdater.scala:61) 
     at com.datastax.spark.connector.rdd.CassandraTableScanRDD.compute(CassandraTableScanRDD.scala:196) 
     at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277) 
     at org.apache.spark.rdd.RDD.iterator(RDD.scala:244) 
     at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61) 
     at org.apache.spark.scheduler.Task.run(Task.scala:64) 
     at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:722) 

Что мне не хватает? Все ответы, которые я искал, предлагают использовать 1.2.1, которые я уже делаю.

Любые предложения были бы высоко оценены!

+1

Какова настройка вашего кластера? Вы на 100% уверены, что работаете против Spark 1.2.1? Также на исполнителях? Проблема в том, что этот метрический аксессуар стал закрытым в Spark 1.3.0 и, следовательно, не может быть найден во время выполнения. См. [Https://github.com/apache/spark/blob/v1.2.2/core/src/main/scala/org/apache/spark/executor/TaskMetrics.scala#L83](Spark v1.2.2) vs [ https://github.com/apache/spark/blob/v1.3.0/core/src/main/scala/org/apache/spark/executor/TaskMetrics.scala#L107](spark v1.3.0) – maasg

+0

Простите, сделав некоторые больше оглядываясь, я понимаю, что я запускаю искру 1.3.1. Чтобы вернуться к искрам 1.2.x, мне нужно будет скачать эту версию и начать с нуля? Или я могу просто изменить значения ревизии в файле .sbt? – user3376961

+1

Я не знаю, что вы делали раньше. Вам потребуется настроить кластерную среду для 1.2.x, вероятно, следуя тому же самому процессу, который вы делали раньше. – maasg

ответ

1

Вы на 100% уверены, что работаете против Spark 1.2.1? Также на исполнителях?

Проблема заключается в том, что этот метрический аксессуар стал приватным в Spark 1.3.0 и, следовательно, не может быть найден во время выполнения. См. TaskMetrics.scala - Spark 1.2.2 vs TaskMetrics.scala - spark v1.3.0, поэтому, скорее всего, есть версия Spark1.3.x.

Убедитесь, что версия 1.2.x одинакова и для всех исполнителей.