Aplicativo Java Spark e Cassandra: Exceção no encadeamento “main” java.lang.NoClassDefFoundError: org / apache / spark / sql / Dataset

Eu tenho um aplicativo java incrivelmente siplme que quase copiei deste exemplo:http://markmail.org/download.xqy?id=zua6upabiylzeetp&number=2

Tudo o que eu queria fazer era ler os dados da tabela e exibir no console do Eclipse.

Meu pom.xml:

        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>chat_connaction_test</groupId>
  <artifactId>ChatSparkConnectionTest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 <dependencies> 
    <dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-core</artifactId>
    <version>3.1.0</version>
    </dependency>

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

    <!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector_2.10 -->
    <dependency>
    <groupId>com.datastax.spark</groupId>
    <artifactId>spark-cassandra-connector_2.10</artifactId>
    <version>2.0.0-M3</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming_2.10 -->
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.10</artifactId>
    <version>2.0.0</version>
    </dependency>
    <!--
    <dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-hive_2.10</artifactId> 
    <version>1.5.2</version> 
    </dependency>
    -->
  </dependencies>
</project>

E meu código java:

    package com.chatSparkConnactionTest;

import static com.datastax.spark.connector.japi.CassandraJavaUtil.javaFunctions;
import java.io.Serializable;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import com.datastax.spark.connector.japi.CassandraRow;

public class JavaDemo implements Serializable {
    private static final long serialVersionUID = 1L;
    public static void main(String[] args) {

        SparkConf conf = new SparkConf().
            setAppName("chat").
            setMaster("local").
            set("spark.executor.memory","1g").
            set("spark.cassandra.connection.host", "127.0.0.1");
        JavaSparkContext sc = new JavaSparkContext(conf);

        JavaRDD<String> cassandraRowsRDD = javaFunctions(sc).cassandraTable(
            "chat", "dictionary")

            .map(new Function<CassandraRow, String>() {
                @Override
                public String call(CassandraRow cassandraRow) throws Exception {
                    String tempResult = cassandraRow.toString();
                    System.out.println(tempResult);
                    return tempResult;
                    }
                }
            );
        System.out.println("Data as CassandraRows: \n" + 
        cassandraRowsRDD.collect().size()); // THIS IS A LINE WITH ERROR
    } 
}

E aqui está o meu erro:

16/10/05 20:49:18 INFO CassandraConnector: conectado ao cluster Cassandra: exceção de cluster de teste no encadeamento "main" java.lang.NoClassDefFoundError: org / apache / spark / sql / dataset em java.lang.Class.getDeclaredMethods0 ( Método nativo) em java.lang.Class.privateGetDeclaredMethods (fonte desconhecida) em java.lang.Class.getDeclaredMethod (fonte desconhecida) em java.io.ObjectStreamClass.getPrivateMethod (fonte desconhecida) em java.io.ObjectStreamClass.access $ 1700 (desconhecido Fonte) em java.io.ObjectStreamClass $ 2.run (fonte desconhecida) em java.io.ObjectStreamClass $ 2.run (fonte desconhecida) em java.security.AccessController.doPrivileged (método nativo) em java.io.ObjectStreamClass. ) em java.io.ObjectStreamClass.lookup (Origem desconhecida) em java.io.ObjectOutputStream.writeObject0 (Origem desconhecida) em java.io.ObjectOutputStream.defaultWriteFields (Origem desconhecida) em java.io.ObjectOutputStream.writeSerialData (Origem desconhecida) em java.io.ObjectOutputStream.writeOrdinaryObject (fonte desconhecida) em java.io.ObjectOutput Stream.writeObject0 (Origem desconhecida) em java.io.ObjectOutputStream.defaultWriteFields (Origem desconhecida) em java.io.ObjectOutputStream.writeSerialData (Origem desconhecida) em java.io.ObjectOutputStream.writeOrdinaryObject (Origem desconhecida) em java.io.ObjectOutput. writeObject0 (Origem desconhecida) em java.io.ObjectOutputStream.writeObject (Origem desconhecida) em scala.collection.immutable. $ colon $ colon.writeObject (List.scala: 379) em sun.reflect.NativeMethodAccessorImpl.invoke0 (Método nativo) em sun.reflect.NativeMethodAccessorImpl.invoke (Origem desconhecida) em sun.reflect.DelegatingMethodAccessorImpl.invoke (Origem desconhecida) em java.lang.reflect.Method.invoke (Origem desconhecida) em java.io.ObjectStreamClass.invokeWriteObject (Unknown Source) em java.io.ObjectStreamClass.invokeWriteObject (Unknown Source) java.io.ObjectOutputStream.writeSerialData (fonte desconhecida) em java.io.ObjectOutputStream.writeOrdinaryObject (fonte desconhecida) em java.io.ObjectOutputStream.writeObject0 (fonte desconhecida) em java.io.ObjectOutputStream.defaultWriteFields (fonte desconhecida). io.ObjectOutputS tream.writeSerialData (Origem desconhecida) em java.io.ObjectOutputStream.writeOrdinaryObject (Origem desconhecida) em java.io.ObjectOutputStream.writeObject0 (Origem desconhecida) em java.io.ObjectOutputStream.defaultWriteFields (Origem desconhecida) em java.io.ObjectOutput writeSerialData (Origem desconhecida) em java.io.ObjectOutputStream.writeOrdinaryObject (Origem desconhecida) em java.io.ObjectOutputStream.writeObject0 (Origem desconhecida) em java.io.ObjectOutputStream.defaultWriteFields (Origem desconhecida) em java.io.ObjectOutputStream Origem desconhecida) em java.io.ObjectOutputStream.writeOrdinaryObject (Origem desconhecida) em java.io.ObjectOutputStream.writeObject0 (Origem desconhecida) em java.io.ObjectOutputStream.writeObject (Origem desconhecida) em org.apache.spark.serializer.JavaSerializationStream. writeObject (JavaSerializer.scala: 43) em org.apache.spark.serializer.JavaSerializerInstance.serialize (JavaSerializer.scala: 100) em org.apache.spark.util.ClosureCleaner $ .ensureSerializable (ClosureCleaner.scala: 295) em org. apache.spark.util.ClosureCleaner $ .org $ apache $ spark $ util $ ClosureCleaner $ clean (ClosureCleaner.scala: 288) em org.apache.spark.util.ClosureCleaner $ .clean (ClosureCleaner.scala: 108) na organização .apache.spark.SparkContext.clean (SparkContext.scala: 2037) em org.apache.spark.SparkContext.runJob (SparkContext.scala: 1896) em org.apache.spark.SparkContext.runJob (SparkContext.scala: 1911) em org.apache.spark.rdd.RDD $ anonfun $ collect $ 1.apply (RDD.scala: 893) em org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 151) em org.apache.spark .rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 112) em org.apache.spark.rdd.RDD.withScope (RDD.scala: 358) em org.apache.spark.rdd.RDD.collect (RDD.scala: 892) em org.apache.spark.api.java.JavaRDDLike $ class.collect (JavaRDDLike.scala: 360) em org.apache.spark.api.java.AbstractJavaRDDLike.collect (JavaRDDLike.scala: 45) em com.chatSparkConnactionTest .JavaDemo.main (JavaDemo.java:37) Causado por: java.lang.ClassNotFoundException: org.apache.spark.sql.Dataset em java.net.URLClassLoader.findClass (fonte desconhecida) em java.lang.ClassLoader.loadClass (fonte desconhecida) em sun.misc.Launcher $ AppClassLoader.loadClass (fonte desconhecida) em java.lang.ClassLoader.loadClass (fonte desconhecida) ... 58 mais

Atualizei meu pom.xml, mas isso não resolveu o erro. Alguém poderia me ajudar a resolver esse problema?

Obrigado!

Atualização 1: aqui está a captura de tela do meu caminho de construção:Link para minha captura de tela

questionAnswers(3)

yourAnswerToTheQuestion