Spark Cassandra连接器基础简单程序遇到火花记录错误

时间:2018-06-27 06:06:00

标签: java apache-spark cassandra

我正在尝试一个非常基本的java + spark + cassandra的hello world程序。

最初,我有一些混合版本的库,导致NoSuchMethodError(#5)。当我获得正确的版本时,我得到了火花记录(#4)的noclassdefound错误。这来自cassandra连接器代码。我是从github的b2.3分支构建的,它仅是master后面的几次提交(使用sbt)。

所有关于火花记录的解决方案都指向旧版本。对于我们来说,这不是一个实际的解决方案,因为我们需要为将来的发展弄清楚这一点。 想知道为什么最新的稳定版本的cassandra连接器引用的火花记录现在不再可用? 任何帮助表示赞赏。

火花版本:2.3.0 卡桑德拉:3.9.0

相关代码段粘贴在下面。

   #1 SparkConf sparkConf = new SparkConf().setAppName("appname")
        .setMaster("local");
   #2 sparkConf.set("spark.cassandra.connection.host", "127.0.0.1"); 

   #3 JavaSparkContext ctx = new JavaSparkContext(sparkConf);

   #4 CassandraConnector connector = CassandraConnector.apply(ctx.getConf()); <<<< org/apache/spark/logging noclassdeffound error

   #5 try (Session session = connector.openSession()) { <<< nosuchmethoderror: scala.runtime.objectref.zero()lscala/runtime/objectref

POM在下面

http://maven.apache.org/xsd/maven-4.0.0.xsd“>     4.0.0     com.mygroup     阿帕奇火花     1.0快照     罐     阿帕奇火花     http://maven.apache.org

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId> 
        <version>2.2.1</version>
    </dependency> 

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.3.1</version>
    </dependency>


    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.11</artifactId>
        <version>2.2.1</version>
    </dependency>

    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector-java_2.11</artifactId>
        <version>1.6.0-M1</version>
    </dependency>  
    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>3.5.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.thrift</groupId>
        <artifactId>libthrift</artifactId>
        <version>0.11.0</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <org.apache.spark.spark-core.version>2.2.1</org.apache.spark.spark-core.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

1 个答案:

答案 0 :(得分:1)

首先要解决的是

<dependency>
    <groupId>com.datastax.spark</groupId>
    <artifactId>spark-cassandra-connector-java_2.11</artifactId>
    <version>1.6.0-M1</version>
</dependency>  

与您的任何其他内部版本都不匹配。 Java模块已合并到主要工件中。您也不应该自己包含Java驱动程序模块,因为这很可能会导致番石榴包含物出现问题。

看看

https://github.com/datastax/SparkBuildExamples/blob/master/scala/maven/oss/pom.xml例如pom文件。