我下载了 spark-2.4.0-bin-without-hadoop.tgz 软件包并安装在我的系统中。我想在本地模式下运行简单的Apache Spark代码,但这给了我 NoClassDefFoundError 。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
在谷歌搜索之后,我发现需要将SPARK_DIST_CLASSPATH设置为hadoop类路径。我遵循了指示,并且有效。
我想知道为什么需要hadoop库在独立模式或本地模式下运行spark。
答案 0 :(得分:1)
Spark主要使用Hadoop Configuration类和FileSystem API,以便更轻松地与Hadoop生态系统中的其他系统集成,并且本质上不需要将所有这些类本地复制到Spark代码库中。换句话说,Spark是一个数据处理框架,而不是Filesytem接口或配置管理库。
当您下载无hadoop 版本的Spark时,这实际上意味着您已经在scales = "free_x", space = "free_x"
和类路径(通过PATH
)上安装了Hadoop并且可以使用Hadoop。另外,Spark下载页面显示了“用户提供的” Hadoop,以明确这一点。