web-dev-qa-db-fra.com

Spark Soumission échoue avec Java.lang.NoSuchMethodError: scala.Predef $. $ Conforms () Lscala / Predef $$ moins $ colon $ moins;

J'utilise spark 1.3.1 version pré-construction spark-1.3.1-bin-hadoop2.6.tgz

Exception dans le thread "principal" Java.lang.NoSuchMethodError: scala.Predef $. $ Conforms () Lscala/Predef $$ moins $ colon $ moins; à org.Apache.spark.util.Utils $ .getSystemProperties (Utils.scala: 1418) à org.Apache.spark.SparkConf. (SparkConf.scala: 58) à org.Apache.spark.SparkConf. (SparkConf.scala: 52) sur com.zoho.zbi.Testing.test (Testing.Java:43) sur com.zoho.zbi.Testing.main (Testing.Java:39) Utilisation du profil log4j par défaut de Spark: org/Apache/spark/log4j- defaults.properties

J'essaie une application de démonstration simple pour enregistrer sur cassandra

SparkConf batchConf= new SparkConf()
            .setSparkHome(sparkHome)
            .setJars(jars)
            .setAppName(ZohoBIConstants.getAppName("cassandra"))//NO I18N
            .setMaster(master).set("spark.cassandra.connection.Host", "localhost");

            JavaSparkContext sc = new JavaSparkContext(batchConf);
            // here we are going to save some data to Cassandra...
            List<Person> people = Arrays.asList(
                    Person.newInstance(1, "John", new Date()),
                    Person.newInstance(2, "Anna", new Date()),
                    Person.newInstance(3, "Andrew", new Date())
            );
//          Person test = Person.newInstance(1, "vini", new Date())''
            System.out.println("Inside Java API Demo : "+people);
            JavaRDD<Person> rdd = sc.parallelize(people);
            System.out.println("Inside Java API Demo rdd : "+rdd);
            javaFunctions(rdd).writerBuilder("test", "people", mapToRow(Person.class)).saveToCassandra();
            System.out.println("Stopping sc");
            sc.stop();

quand je soumets en utilisant spark soumettre son travail

bin/spark-submit --class "abc.efg.Testing" --master spark://xyz:7077 /home/test/target/uber-Cassandra-0.0.1-SNAPSHOT.jar

Voici mon pom

dépendances

<dependencies>
  <!-- Scala -->
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${scala.version}</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-compiler</artifactId>
        <version>${scala.version}</version>
    </dependency>
    <!-- END Scala -->
  <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
  </dependency>

  <dependency>
    <groupId>com.yammer.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>2.2.0</version>
  </dependency>

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
  </dependency>

  <dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-core</artifactId>
    <version>2.1.5</version>
  </dependency>

  <dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
  </dependency>
<!-- Cassandra Spark Connector dependency -->
  <dependency>
    <groupId>com.datastax.spark</groupId>
    <artifactId>spark-cassandra-connector_2.10</artifactId>
    <version>1.2.0</version>
  </dependency>
<!-- Cassandra Java Connector dependency -->
  <dependency>
    <groupId>com.datastax.spark</groupId>
    <artifactId>spark-cassandra-connector-Java_2.10</artifactId>
    <version>1.2.0</version>
  </dependency> 

<!-- Spark Core dependency -->
        <dependency>
                <groupId>org.Apache.spark</groupId>
                <artifactId>spark-core_2.11</artifactId>
                <version>1.3.1</version>
        </dependency>
    <!-- Spark dependency -->
        <dependency>
                 <groupId>org.Apache.spark</groupId>
                 <artifactId>spark-streaming_2.11</artifactId>
                <version>1.3.1</version>
        </dependency>
    <!-- Spark dependency -->
        <dependency>
                <groupId>org.Apache.spark</groupId>
                <artifactId>spark-streaming-kafka_2.10</artifactId>
                <version>1.3.1</version>
        </dependency>
  </dependencies>

et je construis en utilisant

<build>
      <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
           <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                    <finalName>uber-${project.artifactId}-${project.version}</finalName>
                </configuration>
            </plugin>
           <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>

      </plugins>
    </build>

mais quand je soumets par le biais de son code ne fonctionne pas, toute aide est très appréciée .. J'ai essayé d'ajouter prop scala2.10.4 dans pom toujours pas de chance

J'exécute dans Eclipse en tant qu'exécution en tant qu'application avec tous les fichiers master, spark home et jars définis sur sparkConf, l'erreur s'affiche exactement dans sparkConf

Ma scala est

scala -version Scala code runner version 2.11.2 - Copyright 2002-2013, LAMP/EPFL

est-ce que cela a quelque chose à voir avec le problème?

Comment passer à une ancienne version de scala? Dans le document, il est dit que spark1.3.1 prend en charge scala 2.10.x versions, s'il vous plaît laissez-moi savoir comment résoudre ce problème

11
mithra

Le problème que vous rencontrez est dû aux incompatibilités dans les versions Scala. La distribution préconstruite Spark 1.3.1 est compilée avec les anciennes versions Scala 2.10 car certaines des dépendances Spark ne sont pas prises en charge sous 2.11, y compris la prise en charge JDBC.

Je suggère d'exécuter votre cluster Spark avec Scala 2.10. Cependant, si vous le souhaitez, vous pouvez également compiler votre package Spark avec Scala 2.11 de la manière suivante:

dev/change-version-to-2.11.sh
mvn -Pyarn -Phadoop-2.4 -Dscala-2.11 -DskipTests clean package
19
Maksud

je rencontrais le même problème dans scala IDE.et les étapes ci-dessous ont résolu cela.

Remarque: -vérifiez la compatibilité selon votre scala-spark. pour moi c'est scala version - 2.11. * est compatible avec spark 2.4. *

Allez dans le projet >> clic droit >> propriétés >> scala >> sélectionnez l'option "utiliser les paramètres du projet" >> et changez "installation scala" >> appliquez >> appliquez et fermez .. ... bon pour aller.

cliquez sur le lien ci-dessous pour voir le réglage de Scala IDE

1
Santosh Hencha