当前位置: 首页 > 知识库问答 >
问题:

异常线程"main"java.lang.NoClassDefFoundError: org/apache/火花/rdd/RDD

贲绪
2023-03-14

请注意,我比程序员更擅长数据挖掘。我试图运行作者Sandy Ryza的书《Spark的高级分析》中的示例(这些代码示例可以从https://github.com/sryza/aas下载),我遇到了以下问题。当我打开这个项目在Intelij的想法,并试图运行它,我得到错误"异常线程"主"java.lang.NoClassDefFoundError: org/apache/火花/rdd/RDD"有人知道如何解决这个问题吗?
这是否意味着我使用了错误版本的火花?

首先,当我试图运行这段代码时,我在线程“main”java.lang.NoClassDefFoundError:scala/product中得到了错误“Exception”,但我通过将scala lib设置为在maven中编译来解决它。我使用Maven 3.3。9,Java1.7。0_79和scala 2.11。7,火花1.6。1.我尝试了Intelij Idea 14和15个不同版本的java(1.7)、scala(2.10)和spark,但都没有成功。我也在使用Windows7。设置了SPARK_HOME和Path变量,可以从命令行执行SPARK shell。

共有1个答案

关翰
2023-03-14

这本书中的示例将显示一个用于Sparkshell的--master参数,但是您需要根据您的环境指定合适的参数。如果你没有安装Hadoop,你需要在本地启动火花外壳。要执行示例,您可以简单地将路径传递到本地文件引用(文件:///), 而不是HDFS引用(hdfs://)

作者建议采用混合开发方法:

在REPL中保持开发的前沿,并且,随着代码块的硬化,将它们转移到编译库中。

因此,示例代码被视为编译库,而不是独立的应用程序。通过将编译后的JAR传递给--jars属性,可以使spark shell可以使用它,而maven用于编译和管理依赖项。

在本书中,作者描述了如何执行SimpleSpark项目:

使用maven编译和打包项目

cd simplesparkproject/
mvn package 

用jar依赖项启动sparkshell

spark-shell --master local[2] --driver-memory 2g --jars ../simplesparkproject-0.0.1.jar ../README.md

然后可以访问spark shell中的对象,如下所示:

val myApp = com.cloudera.datascience.MyApp

但是,如果您想将示例代码作为独立应用程序执行,并在idea中执行,则需要修改pom。xml。有些依赖项是编译所必需的,但在spark运行时环境中可用。因此,这些依赖项用pom中提供的范围进行标记。xml。

<!--<scope>provided</scope>-->

您可以重新生成提供的范围,然后才能在idea中运行示例。但是您不能再提供这个jar作为sparkshell的依赖项了。

注意:使用maven 3.0.5和Java7。我与maven 3.3有问题。X版本的插件版本。

 类似资料: