首页 文章

Spark Java scala错误

提问于
浏览
0

嘿我想在我的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 回答

  • -1

    scala.Cloneable类存在于scala-library * .jar中 . 将scala-library添加到pom.xml后,此错误消失了

    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.1</version>
    </dependency>
    
  • 2

    你可以使用 JavaSparkContext 来处理来自Java的Spark,但是你仍然需要scala,因为Spark是用scala编写的 . 大多数操作都在内部转换为scala,或者在内部使用scala类 . 您可以使用Java编写所有内容,但仍需要在类路径中使用scala .

    因此,为了修复您的错误,您需要安装scala并使 SCALA_HOME 指向您安装它的目录 .

相关问题