【发布时间】:2017-02-14 16:29:15
【问题描述】:
我得到了一个惊人的 siplme java 应用程序,我几乎从这个例子中复制了它:http://markmail.org/download.xqy?id=zua6upabiylzeetp&number=2
我想做的只是读取表数据并显示在 Eclipse 控制台中。
我的 pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>chat_connaction_test</groupId>
<artifactId>ChatSparkConnectionTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>2.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector_2.10 -->
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>2.0.0-M3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming_2.10 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.10</artifactId>
<version>2.0.0</version>
</dependency>
<!--
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.5.2</version>
</dependency>
-->
</dependencies>
</project>
还有我的java代码:
package com.chatSparkConnactionTest;
import static com.datastax.spark.connector.japi.CassandraJavaUtil.javaFunctions;
import java.io.Serializable;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import com.datastax.spark.connector.japi.CassandraRow;
public class JavaDemo implements Serializable {
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
SparkConf conf = new SparkConf().
setAppName("chat").
setMaster("local").
set("spark.executor.memory","1g").
set("spark.cassandra.connection.host", "127.0.0.1");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> cassandraRowsRDD = javaFunctions(sc).cassandraTable(
"chat", "dictionary")
.map(new Function<CassandraRow, String>() {
@Override
public String call(CassandraRow cassandraRow) throws Exception {
String tempResult = cassandraRow.toString();
System.out.println(tempResult);
return tempResult;
}
}
);
System.out.println("Data as CassandraRows: \n" +
cassandraRowsRDD.collect().size()); // THIS IS A LINE WITH ERROR
}
}
这是我的错误:
16/10/05 20:49:18 信息 CassandraConnector:已连接到 Cassandra cluster:在线程“main”中测试集群异常 java.lang.NoClassDefFoundError: org/apache/spark/sql/Dataset 在 java.lang.Class.getDeclaredMethods0(本机方法)在 java.lang.Class.privateGetDeclaredMethods(未知来源)在 java.lang.Class.getDeclaredMethod(未知来源)在 java.io.ObjectStreamClass.getPrivateMethod(Unknown Source) 在 java.io.ObjectStreamClass.access$1700(Unknown Source) at java.io.ObjectStreamClass$2.run(Unknown Source) at java.io.ObjectStreamClass$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.io.ObjectStreamClass.(Unknown Source) at java.io.ObjectStreamClass.lookup(未知来源)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.defaultWriteFields(未知来源)在 java.io.ObjectOutputStream.writeSerialData(未知来源)在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.defaultWriteFields(未知来源)在 java.io.ObjectOutputStream.writeSerialData(未知来源)在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.writeObject(Unknown Source) 在 scala.collection.immutable.$colon$colon.writeObject(List.scala:379) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(未知来源)在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.defaultWriteFields(未知来源)在 java.io.ObjectOutputStream.writeSerialData(未知来源)在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.defaultWriteFields(未知来源)在 java.io.ObjectOutputStream.writeSerialData(未知来源)在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.defaultWriteFields(未知来源)在 java.io.ObjectOutputStream.writeSerialData(未知来源)在 java.io.ObjectOutputStream.writeOrdinaryObject(未知来源)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.writeObject(Unknown Source) 在 org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:43) 在 org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:100) 在 org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:295) 在 org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:288) 在 org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:108) 在 org.apache.spark.SparkContext.clean(SparkContext.scala:2037) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1896) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1911) 在 org.apache.spark.rdd.RDD$$anonfun$collect$1.apply(RDD.scala:893) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112) 在 org.apache.spark.rdd.RDD.withScope(RDD.scala:358) 在 org.apache.spark.rdd.RDD.collect(RDD.scala:892) 在 org.apache.spark.api.java.JavaRDDLike$class.collect(JavaRDDLike.scala:360) 在 org.apache.spark.api.java.AbstractJavaRDDLike.collect(JavaRDDLike.scala:45) 在 com.chatSparkConnactionTest.JavaDemo.main(JavaDemo.java:37) 引起 由:java.lang.ClassNotFoundException:org.apache.spark.sql.Dataset 在 java.net.URLClassLoader.findClass(未知来源)在 java.lang.ClassLoader.loadClass(Unknown Source) 在 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 58 更多
我更新了我的 pom.xml,但这并没有解决错误。谁能帮我解决这个问题?
谢谢!
更新 1: 这是我的构建路径截图: Link to my screenshot
【问题讨论】:
标签: java apache-spark cassandra datastax