加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 线程“main”中的异常java.lang.NoClassDefFoundError

发布时间:2020-12-16 08:45:09 所属栏目:安全 来源:网络整理
导读:请注意,我比程序员更好的数据. 我试图从作者Sandy Ryza的书中“使用Spark进行高级分析”中编写示例(这些代码示例可以从“ https://github.com/sryza/aas”下载), 我遇到了以下问题. 当我在Intelij Idea中打开这个项目并尝试运行它时,我收到错误“线程中的异
请注意,我比程序员更好的数据.
我试图从作者Sandy Ryza的书中“使用Spark进行高级分析”中编写示例(这些代码示例可以从“ https://github.com/sryza/aas”下载),
我遇到了以下问题.
当我在Intelij Idea中打开这个项目并尝试运行它时,我收到错误“线程中的异常”主“java.lang.NoClassDefFoundError:org / apache / spark / rdd / RDD”
有谁知道如何解决这个问题?
这是否意味着我使用了错误版本的spark?

首先,当我尝试运行此代码时,我收到错误“线程中的异常”主“java.lang.NoClassDefFoundError:scala / product”,但我通过设置scala-lib在maven中编译来解决它.
我使用Maven 3.3.9,Java 1.7.0_79和scala 2.11.7,spark 1.6.1.我尝试了Intelij Idea 14和15个不同版本的java(1.7),scala(2.10)和spark,但没有成功.
我也在使用Windows 7.
我的SPARK_HOME和Path变量已设置,我可以从命令行执行spark-shell.

解决方法

本书中的示例将显示sparkshell的–master参数,但您需要根据您的环境指定参数.如果您没有安装Hadoop,则需要在本地启动spark-shell.要执行示例,您只需将路径传递给本地文件引用(file:///),而不是HDFS引用(hdfs://)

作者提出了一种混合开发方法:

Keep the frontier of development in the REPL,and,as pieces of code
harden,move them over into a compiled library.

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

在本书中,作者描述了如何执行simplesparkproject:

使用maven编译和打包项目

cd simplesparkproject/
mvn package

使用jar依赖项启动spark-shell

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

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

val myApp = com.cloudera.datascience.MyApp

但是,如果要将示例代码作为独立应用程序执行并在想法中执行它,则需要修改pom.xml.
编译需要一些依赖项,但在spark运行时环境中可用.因此,这些依赖项使用pom.xml中提供的作用域进行标记.

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

您可以重新制作提供的范围,而不是您可以在想法中运行示例.但你不能再提供这个jar作为火花壳的依赖.

注意:使用maven 3.0.5和Java 7.我在使用插件版本的maven 3.3.X版本时遇到了问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读