嘿我想在我的Java项目中使用spark:
我已将此依赖项添加到我的pom文件中:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>1.4.0</version>
</dependency>
我试过这段代码:
import org.apache.spark.api.java.JavaSparkContext;
public class sparkSQL {
public void query() {
JavaSparkContext sc = new JavaSparkContext();
}
}
我在我的主要调用了这个函数,但是我收到了这个错误:
线程“main”java.lang.NoClassDefFoundError中的异常:java.security.SecureClassLoader中java.lang.ClassLoader.defineClass(ClassLoader.java:800)的java.lang.ClassLoader.defineClass1(本机方法)中的scala / Cloneable . java.net.URLClassLoader.access的java.net.URLClassLoader.defineClass(URLClassLoader.java:449)中的defineClass(SecureClassLoader.java:142)java.net.URLClassLoader $ 1.run(URLClassLoader)中的$ 100(URLClassLoader.java:71) .java:361)java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:354)at java .lang.ClassLoader.loadClass(ClassLoader.java:425)位于org.apache的java.lang.ClassLoader.loadClass(ClassLoader.java:358)的sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) . spark.SparkContext . (SparkContext.scala:111)位于org.apache.spark.api.java.JavaSparkContext . (JavaSparkContext.scala:56),位于main的realtimequeries.sparkSQL.query(sparkSQL.java:7) . main(main.java:25)Blockquote引起:java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)中的scala.Cloneable java.net.URLClassLoader $ 1.run(URLClassLoader.java) :355)在java.security.AccessController.doPrivileged(Native Method)java.net.URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:425)at sun.misc . Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader.loadClass(ClassLoader.java:358)... 16 more Blockquote
我不明白为什么会出现这个错误,因为通常会为此利用率创建JavaSparkContext:
一个Java友好版本的SparkContext,它返回JavaRDDs并使用Java集合而不是Scala集合 .
我已经看过了我所拥有的spark-core_2.11依赖项的pom,似乎我们可以找到一个scala依赖项:
http://central.maven.org/maven2/org/apache/spark/spark-hive_2.10/1.4.0/spark-hive_2.10-1.4.0.pom
我错过了什么 ?我做错了什么?提前致谢
2 回答
scala.Cloneable类存在于scala-library * .jar中 . 将scala-library添加到pom.xml后,此错误消失了
你可以使用
JavaSparkContext
来处理来自Java的Spark,但是你仍然需要scala,因为Spark是用scala编写的 . 大多数操作都在内部转换为scala,或者在内部使用scala类 . 您可以使用Java编写所有内容,但仍需要在类路径中使用scala .因此,为了修复您的错误,您需要安装scala并使
SCALA_HOME
指向您安装它的目录 .