【问题标题】:Spark Submit fails with java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less;Spark 提交失败并出现 java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less;
【发布时间】:2015-08-01 06:20:00
【问题描述】:

我使用的是 spark 1.3.1 prebuild 版本 spark-1.3.1-bin-hadoop2.6.tgz

线程“主”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

我正在尝试一个简单的演示应用程序来保存到 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 提交时提交它的工作

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>

但是当我通过代码提交它不起作用时,任何帮助都非常重要。我尝试在 pom 中添加 scala2.10.4 道具仍然没有运气

我在 eclipse 中作为应用程序运行,所有 master、spark home 和 jar 都设置为 sparkConf,错误在 sparkConf 中完全显示

我的scala版本是

scala -版本 Scala 代码运行器版本 2.11.2 -- 版权所有 2002-2013,LAMP/EPFL

这和问题有关系吗?

如何切换到旧版本的 scala?在文档中它说 spark1.3.1 支持 scala 2.10.x 版本,请告诉我如何解决这个问题

【问题讨论】:

  • 到目前为止,您找到解决方案了吗?我有类似的问题,也有兴趣回答。
  • 你试过@Maksud 的答案了吗?

标签: java maven apache-spark cassandra-2.0


【解决方案1】:

您遇到的问题是由于 Scala 版本不兼容造成的。预构建 Spark 1.3.1 发行版是使用较旧的 Scala 2.10 编译的,因为 2.11 不支持某些 Spark 依赖项,包括 JDBC 支持。

我建议使用 Scala 2.10 运行您的 Spark 集群。但是,如果您愿意,也可以通过以下方式使用 Scala 2.11 编译 Spark 包:

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

【讨论】:

  • @mithra(OP)这似乎是一个很好的答案。你试过了吗?
  • 显然,它也写在 Spark 文档页面的下载部分(我错过了......这个答案帮助了我:P):Spark 在 Java 7+、Python 2.6+ 和R 3.1+。对于 Scala API,Spark 1.5.1 使用 Scala 2.10。您需要使用兼容的 Scala 版本 (2.10.x)。
  • 是的,我遇到了同样的问题。这个答案解决了它。谢谢。
【解决方案2】:

我在 scala IDE 中遇到了同样的问题。下面的步骤解决了这个问题。

注意:根据您的 scala-spark 检查兼容性。对我来说它是 scala 版本 - 2.11.* 与 spark 2.4.* 兼容

转到项目>>右键单击>>属性>>scala编译器>>选择“使用项目设置”选项>>并更改“scala安装”>>应用>>应用并关闭.....很好.

click on below image link to see setting of Scala IDE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2017-05-02
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多