Aplicación Java Spark y Cassandra: Excepción en el hilo "principal" java.lang.NoClassDefFoundError: org / apache / spark / sql / Dataset

Obtuve una aplicación Java increíblemente siplme que casi copié de este ejemplo:http://markmail.org/download.xqy?id=zua6upabiylzeetp&number=2

Todo lo que quería hacer era leer los datos de la tabla y mostrarlos en la consola de Eclipse.

Mi 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>

Y mi 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
    } 
}

Y aquí está mi error:

16/10/05 20:49:18 INFO CassandraConnector: Conectado al clúster Cassandra: Probar la excepción del clúster en el hilo "main" java.lang.NoClassDefFoundError: org / apache / spark / sql / Dataset en java.lang.Class.getDeclaredMethods0 ( Método nativo) en java.lang.Class.privateGetDeclaredMethods (fuente desconocida) en java.lang.Class.getDeclaredMethod (fuente desconocida) en java.io.ObjectStreamClass.getPrivateMethod (fuente desconocida) en java.io.ObjectStreamClass.access $ 1700 (Unknown Fuente) en java.io.ObjectStreamClass $ 2.run (Fuente desconocida) en java.io.ObjectStreamClass $ 2.run (Fuente desconocida) en java.security.AccessController.doPrivileged (Método nativo) en java.io.ObjectStreamClass. (Fuente desconocida . java.io.ObjectOutputStream.writeOrdinaryObject (fuente desconocida) en java.io.ObjectOutput Stream.writeObject0 (Fuente desconocida) en java.io.ObjectOutputStream.defaultWriteFields (Fuente desconocida) en java.io.ObjectOutputStream.writeSerialData (Fuente desconocida) en java.io.ObjectOutputStream.writeOrdinaryObject (Objeto desconocido). writeObject0 (Fuente desconocida) en java.io.ObjectOutputStream.writeObject (Fuente desconocida) en scala.collection.immutable. $ colon $ colon.writeObject (List.scala: 379) en sun.reflect.NativeMethodAccessorImpl.invoke0 (Método nativo) en sun.reflect.NativeMethodAccessorImpl.invoke (fuente desconocida) en sun.reflect.DelegatingMethodAccessorImpl.invoke (fuente desconocida) en java.lang.reflect.Method.invoke (fuente desconocida) en java.io.ObjectStreamClass.invokeWriteObject (Unknown Source) java.io.ObjectOutputStream.writeSerialData (fuente desconocida) en java.io.ObjectOutputStream.writeOrdinaryObject (fuente desconocida) en java.io.ObjectOutputStream.writeObject0 (fuente desconocida) en java.io.ObjectOutputStream. io.ObjectOutputS tream.writeSerialData (fuente desconocida) en java.io.ObjectOutputStream.writeOrdinaryObject (fuente desconocida) en java.io.ObjectOutputStream.writeObject0 (fuente desconocida) en java.io.ObjectOutputStream.defaultWriteFields.OutOut. writeSerialData (fuente desconocida) en java.io.ObjectOutputStream.writeOrdinaryObject (fuente desconocida) en java.io.ObjectOutputStream.writeObject0 (fuente desconocida) en java.io.ObjectOutputStream.defaultWriteFields (fuente desconocida). Fuente desconocida) en java.io.ObjectOutputStream.writeOrdinaryObject (Fuente desconocida) en java.io.ObjectOutputStream.writeObject0 (Fuente desconocida) en java.io.ObjectOutputStream.writeObject (Fuente desconocida) en org.apache.Spark.seram.eram.er. writeObject (JavaSerializer.scala: 43) en org.apache.spark.serializer.JavaSerializerInstance.serialize (JavaSerializer.scala: 100) en org.apache.spark.util.ClosureCleaner $ .ensureSerializable (ClosureCleaner.scala: 295) en org. apache.spark.util.ClosureCleaner $ .org $ apache $ spark $ util $ ClosureCleaner $ clean (ClosureCleaner.scala: 288) en org.apache.spark.util.ClosureCleaner $ .clean (ClosureCleaner.scala: 108) en org .apache.spark.SparkContext.clean (SparkContext.scala: 2037) en org.apache.spark.SparkContext.runJob (SparkContext.scala: 1896) en org.apache.spark.SparkContext.runJob (SparkContext.scala: 1911) en org.apache.spark.rdd.RDD $ anonfun $ collect $ 1.apply (RDD.scala: 893) en org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 151) en org.apache.spark .rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 112) en org.apache.spark.rdd.RDD.withScope (RDD.scala: 358) en org.apache.spark.rdd.RDD.collect (RDD.scala: 892) en org.apache.spark.api.java.JavaRDDLike $ class.collect (JavaRDDLike.scala: 360) en org.apache.spark.api.java.AbstractJavaRDDLike.collect (JavaRDDLike.scala: 45) en com.chatSparkConnaction .JavaDemo.main (JavaDemo.java:37) Causado por: java.lang.ClassNotFoundException: org.apache.spark.sql.Dataset en java.net.URLClassLoader.findClass (fuente desconocida) en java.lang.ClassLoader.loadClass (fuente desconocida) en sun.misc.Launcher $ AppClassLoader.loadClass (fuente desconocida) en java.lang.ClassLoader.loadClass (fuente desconocida) ... 58 más

Actualicé mi pom.xml pero eso no resolvió el error. ¿Alguien podría ayudarme a resolver este problema?

¡Gracias!

Actualización 1: aquí está mi captura de pantalla de ruta de compilación:Enlace a mi captura de pantalla

Respuestas a la pregunta(3)

Su respuesta a la pregunta