Сбой Spark Submit с java.lang.NoSuchMethodError: scala.Predef$.$ Conforms()Lscala/Predef$$less$colon$less;
Я использую предсоборную версию spark 1.3.1 spark-1.3.1-bin-hadoop2.6.tgz
Исключение в потоке "main" java.lang.NoSuchMethodError: scala.Predef$.$ Conforms()Lscala/Predef$$less$colon$less; в org.apache.spark.util.Utils$.getSystemProperties(Utils.scala:1418) в org.apache.spark.SparkConf.(SparkConf.scala:58) в org.apache.spark.SparkConf.(SparkConf.scala:52) на com.zoho.zbi.Testing.test(Testing.java:43) на com.zoho.zbi.Testing.main(Testing.java:39) Использование стандартного профиля Spark log4j: org/apache/spark/log4j-defaults.properties
Я пытаюсь простое демонстрационное приложение, чтобы сохранить на Кассандре
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();
когда я отправляю, используя иску представить его работу
bin/spark-submit --class "abc.efg.Testing" --master spark://xyz:7077 /home/test/target/uber-Cassandra-0.0.1-SNAPSHOT.jar
Вот мой пом
зависимости
<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>
но когда я отправляю через код, он не работает, любая помощь очень ценится.. Я пытался добавить scala2.10.4 prop в pom до сих пор не повезло
Я работаю в Eclipse, так как запускаюсь как приложение со всеми master, spark home и jars, установленными в sparkConf, ошибка точно отображается в sparkConf.
Моя версия Scala
Scala-версия Scala код бегун версии 2.11.2 - Copyright 2002-2013, LAMP/EPFL
это как-то связано с проблемой?
Как перейти на более старую версию scala? В документе написано, что spark1.3.1 поддерживает версии scala 2.10.x, пожалуйста, дайте мне знать, как это исправить
1 ответ
Проблема, с которой вы столкнулись, связана с несовместимостью в версиях Scala. Предварительно собранный дистрибутив 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
У меня возникла такая же проблема в scala IDE. и следующие шаги решили это.
Примечание:-проверьте совместимость согласно вашему scala-spark. для меня это версия scala - 2.11.* совместима с spark 2.4.*
Перейдите в проект >> щелкните правой кнопкой мыши >> свойства >> компилятор scala >> выберите параметр "использовать параметры проекта" >> и измените "установка scala" >> применить >> применить и закрыть..... готово.
нажмите на ссылку изображения ниже, чтобы увидеть настройки Scala IDE