Ошибка при запуске приложения Spark с использованием разъема Spark-Cassandra

Я написал базовое приложение Spark, которое читает и записывает в Cassandra, следуя этому руководству (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"
)

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

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, что я уже делаю.

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


person user3376961    schedule 09.06.2015    source источник
comment
Как устроен ваш кластер? Вы на 100% уверены, что работаете против Spark 1.2.1? Также по исполнителям? Проблема в том, что этот метод доступа к метрике стал закрытым в Spark 1.3.0 и поэтому не может быть найден во время выполнения. См. [github.com/apache/spark/blob/v1.2.2/core/src/main/scala/org/ v1.2.2) vs [github.com/ apache / spark / blob / v1.3.0 / core / src / main / scala / org / v1.3.0)   -  person maasg    schedule 09.06.2015
comment
Извините, я еще раз оглядываюсь, и понимаю, что у меня Spark 1.3.1. Нужно ли мне загружать эту версию и начинать с нуля, чтобы вернуться к Spark 1.2.x? Или можно просто изменить значения ревизий в файле .sbt?   -  person user3376961    schedule 09.06.2015
comment
Я не знаю, что ты делал раньше. Вам нужно будет настроить кластерную среду для 1.2.x, вероятно, следуя тому же процессу, что и раньше.   -  person maasg    schedule 09.06.2015


Ответы (1)


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

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

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

person maasg    schedule 09.06.2015