Spark Submit не работает с java.lang.NoSuchMethodError: scala.Predef $. $Соответствует() Lscala/Predef $$ меньше $colon $less;

Я использую искровую версию 1.3.1 prebuild spark-1.3.1-bin-hadoop2.6.tgz

Исключение в потоке "main" java.lang.NoSuchMethodError:. scala.Predef $$ Удовлетворяет() Lscala/Predef $$ менее $двоеточие $меньше; в org.apache.spark.util.Utils $.getSystemProperties(Utils.scala: 1418) at org.apache.spark.SparkConf. (SparkConf.scala: 58) at org.apache.spark.SparkConf. (SparkConf.scala: 52) at com.zoho.zbi.Testing.test(Testing.java:43) at com.zoho.zbi.Testing.main(Testing.java:39) Использование Spark по умолчанию log4j профиля: org/apache/spark/log4j-defaults.properties

Я пытаюсь создать простое демонстрационное приложение для сохранения в 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();

когда я отправляю с использованием spark submit его работающий

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

Вот мой pom

зависимостей

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

и я создаю с помощью

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

но когда я отправляю через код его не работает, всякая помощь много appriciated.. Я пробовал добавить scala2.10.4 опоры в пом все еще не повезло

Я забегаю в eclipse, как запущен как приложение со всем мастером, искровым домом и баночками, установленными в sparkConf ошибка отображается точно в sparkConf

Моя версия scala

scala -версия Scala версия для кода 2.11.2 - Copyright 2002-2013, LAMP/EPFL

это имеет какое-либо отношение к проблеме?

Как перейти к более старой версии scala? В документе говорится, что spark1.3.1 поддерживает версии scala 2.10.x, пожалуйста, дайте мне знать, как исправить это.

Ответ 1

Проблема, с которой вы столкнулись, связана с несовместимостью в версиях Scala. Распределение Prebuild Spark 1.3.1 составлено с более старыми Scala 2.10, потому что некоторые из зависимостей Spark не поддерживаются в соответствии с 2.11, включая поддержку JDBC.

Я предлагаю запустить ваш Spark-кластер с помощью Scala 2.10. Однако, если вы хотите, вы также можете скомпилировать пакет Spark с помощью Scala 2.11 следующим образом:

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

Ответ 2

я столкнулся с той же проблемой в IDE Scala, и следующие шаги решили это.

Примечание: -check совместимость в соответствии с вашей Scala-Spark. для меня это версия scala - 2.11. * совместима с spark 2.4. *

Перейдите в проект >> щелкните правой кнопкой мыши >> свойства >> компилятор scala >> выберите опцию "использовать настройки проекта" >> и измените "установка scala" >> примените >> примените и закройте..... готово к работе.

нажмите на ссылку ниже изображения, чтобы увидеть настройки Scala IDE