简体   繁体   English

无法连接到远程系统上的Spark

[英]Unable to connect to spark on remote system

I am trying to connect to spark master on a remote system through java app 我正在尝试通过Java App连接到远程系统上的Spark Master

I am using 我在用

<dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.0.1</version>
</dependency>

and code 和代码

 {
        SparkSession sparkSession = SparkSession.builder().
                           master("spark://ip:7077")
                          .appName("spark session example")
                          .getOrCreate();
        JavaSparkContext sc = new JavaSparkContext(sparkSession.sparkContext());
    }

Getting 得到

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
    at org.apache.spark.sql.SparkSession$Builder.config(SparkSession.scala:713)
    at org.apache.spark.sql.SparkSession$Builder.master(SparkSession.scala:766)
    at com.mobelisk.spark.JavaSparkPi.main(JavaSparkPi.java:9)

Also If I change to 另外,如果我更改为

<dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            **<version>2.0.1</version>**
        </dependency>

on the same program getting 在同一程序上

Caused by: java.lang.RuntimeException: java.io.InvalidClassException: org.apache.spark.rpc.netty.RequestMessage; 引起原因:java.lang.RuntimeException:java.io.InvalidClassException:org.apache.spark.rpc.netty.RequestMessage; local class incompatible: stream classdesc serialVersionUID = -2221986757032131007, local class serialVersionUID = -5447855329526097695 本地类不兼容:流classdesc serialVersionUID = -2221986757032131007,本地类serialVersionUID = -5447855329526097695

In Spark-shell on remote 在远程的Spark-shell中

Spark context available as 'sc' (master = local[*], app id = local-1477561433881). Spark上下文可作为“ sc”使用(主=本地[*],应用程序ID =本地1477561433881)。 Spark session available as 'spark'. Spark会话可作为“火花”使用。 Welcome to ____ __ / / _ _____/ / _\\ / _ / _ `/ / ' / / / .__/_, / / / /_\\ version 2.0.1 / / 欢迎使用____ __ // / _ _____ / / _ \\ / _ / _`/ /' / / / .__ / _, / / / / _ \\版本2.0.1 / /

Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101) Type in expressions to have them evaluated. 使用Scala 2.11.8版(Java HotSpot™64位服务器VM,Java 1.8.0_101),键入表达式以对其求值。 Type :help for more information. 输入:help以获得更多信息。

As I am very new to all this, I am not able to figure out the issue in program 由于我对这一切还很陌生,所以我无法在程序中找出问题

I figured it out, posting this in case if someone is going to follow the similar approach. 我想出了办法,以防万一有人要遵循类似的方法将其发布。

I had added 我添加了

<groupId>com.datastax.spark</groupId>
            <artifactId>spark-cassandra-connector_2.10</artifactId>
<version>2.0.0-M3</version>

which comes with scala-library 2.10.6 与scala库2.10.6一起提供

but there already exists a scala-library 2.11.8 in spark-core 但是在spark-core中已经存在一个scala库2.11.8

so I had to exclude the earlier one like this 所以我不得不排除像这样的早期

<dependency>
            <groupId>com.datastax.spark</groupId>
            <artifactId>spark-cassandra-connector_2.10</artifactId>
            <version>2.0.0-M3</version>
            <exclusions>
                <exclusion>
                    <artifactId>scala-library</artifactId>
                    <groupId>org.scala-lang</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>scala-reflect</artifactId>
                    <groupId>org.scala-lang</groupId>
                </exclusion>
            </exclusions>
</dependency>

Now everything is working fine 现在一切正常

This Spark version mismatch: 此Spark版本不匹配:

  • you use 2.10 in project. 您在项目中使用2.10。
  • cluster uses 2.11 集群使用2.11

Update dependency to 2.11. 将依赖关系更新为2.11。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM