/ / Błąd podczas uruchamiania aplikacji iskrowej za pomocą złącza iskrobassandra - kassandra, iskierka apache, iskra-cassandra-connector

Błąd podczas uruchamiania aplikacji iskrownika za pomocą złącza iskrobassandra - kassandra, iskierka apache, iskra-kassandra-connector

Napisałem podstawową aplikację iskry, która czyta i zapisuje do Cassandry zgodnie z tym przewodnikiem (https://github.com/datastax/spark-cassandra-connector/blob/master/doc/0_quick_start.md)

Tak wygląda plik .sbt dla tej aplikacji:

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"
)

Jak widać, wersja Spark jest 1.2.1 (a nie 1.3.1 jak wiele innych pytań), ale kiedy uruchamiam tę aplikację przy użyciu funkcji wysyłania iskier, wciąż napotykam błąd:

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)

czego mi brakuje? Wszystkie odpowiedzi "przeszukane do tej pory sugerują użycie 1.2.1, które już robię.

Wszelkie sugestie będą mile widziane!

Odpowiedzi:

1 dla odpowiedzi № 1

Czy jesteś w 100% pewien, że używasz Sparka 1.2.1? Również na wykonawcach?

Problem polega na tym, że ten akcesor metryczny stał się prywatny w Spark 1.3.0 i dlatego nie można go znaleźć w czasie wykonywania. Widzieć TaskMetrics.scala - Spark 1.2.2 vs TaskMetrics.scala - spark v1.3.0, więc najprawdopodobniej jest gdzieś wersja Spark1.3.x.

Upewnij się, że ta sama wersja 1.2.x znajduje się również we wszystkich executorach.