【发布时间】:2021-02-10 18:11:55
【问题描述】:
我已经在服务器上安装了 Hadoop + Spark 集群。 在主服务器上的 spark-shell 中编写 scala 代码可以正常工作。
我将 Spark 库(jar 文件)放入我的项目中,我正在通过 Intellij 在我的计算机上编写我的第一个 Scala 代码。
当我运行一个简单的代码来创建一个 SparkContext 对象以通过 hdfs 协议从 HDFS 读取文件时,它会输出错误消息。
测试功能:
import org.apache.spark.SparkContext
class SpcDemoProgram {
def demoPrint(): Unit ={
println("class spe demoPrint")
test()
}
def test(){
var spark = new SparkContext();
}
}
消息是:
20/11/02 12:36:26 信息 SparkContext:运行 Spark 版本 3.0.0 20/11/02 12:36:26 WARN Shell:未找到 winutils.exe:{} java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME 和 hadoop.home.dir 未设置。 -看 https://wiki.apache.org/hadoop/WindowsProblems 在 org.apache.hadoop.util.Shell.fileNotFoundException(Shell.java:548) 在 org.apache.hadoop.util.Shell.getHadoopHomeDir(Shell.java:569) 在 org.apache.hadoop.util.Shell.getQualifiedBin(Shell.java:592) 在 org.apache.hadoop.util.Shell.(Shell.java:689) 在 org.apache.hadoop.util.StringUtils.(StringUtils.java:78) 在 org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1664) 在 org.apache.hadoop.security.SecurityUtil.setConfigurationInternal(SecurityUtil.java:104) 在 org.apache.hadoop.security.SecurityUtil.(SecurityUtil.java:88) 在 org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:316) 在 org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:304) 在 org.apache.hadoop.security.UserGroupInformation.doSubjectLogin(UserGroupInformation.java:1828) 在 org.apache.hadoop.security.UserGroupInformation.createLoginUser(UserGroupInformation.java:710) 在 org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:660) 在 org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:571) 在 org.apache.spark.util.Utils$.$anonfun$getCurrentUserName$1(Utils.scala:2412) 在 scala.Option.getOrElse(Option.scala:189) 在 org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2412) 在 org.apache.spark.SparkContext.(SparkContext.scala:303) 在 org.apache.spark.SparkContext.(SparkContext.scala:120) 在 scala.spc.demo.SpcDemoProgram.test(SpcDemoProgram.scala:14) 在 scala.spc.demo.SpcDemoProgram.demoPrint(SpcDemoProgram.scala:9) 在 scala.spc.demo.SpcDemoProgram$.main(SpcDemoProgram.scala:50) 在 scala.spc.demo.SpcDemoProgram.main(SpcDemoProgram.scala) 原因: java.io.FileNotFoundException: HADOOP_HOME 和 hadoop.home.dir 是 未设置。在 org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:468) 在 org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:439) 在 org.apache.hadoop.util.Shell.(Shell.java:516) ... 19 更多 20/11/02 12:36:26 WARN NativeCodeLoader: 无法加载 native-hadoop 适合您平台的库...使用内置 java 类,其中 适用 20/11/02 12:36:27 错误 SparkContext:初始化错误 火花上下文。 org.apache.spark.SparkException:主 URL 必须是 在您的配置中设置 org.apache.spark.SparkContext.(SparkContext.scala:380) 在 org.apache.spark.SparkContext.(SparkContext.scala:120) 在 scala.spc.demo.SpcDemoProgram.test(SpcDemoProgram.scala:14) 在 scala.spc.demo.SpcDemoProgram.demoPrint(SpcDemoProgram.scala:9) 在 scala.spc.demo.SpcDemoProgram$.main(SpcDemoProgram.scala:50) 在 scala.spc.demo.SpcDemoProgram.main(SpcDemoProgram.scala) 20/11/02 12:36:27 INFO SparkContext:成功停止 SparkContext 线程“主”org.apache.spark.SparkException 中的异常:主 URL 必须在您的配置中设置为 org.apache.spark.SparkContext.(SparkContext.scala:380) 在 org.apache.spark.SparkContext.(SparkContext.scala:120) 在 scala.spc.demo.SpcDemoProgram.test(SpcDemoProgram.scala:14) 在 scala.spc.demo.SpcDemoProgram.demoPrint(SpcDemoProgram.scala:9) 在 scala.spc.demo.SpcDemoProgram$.main(SpcDemoProgram.scala:50) 在 scala.spc.demo.SpcDemoProgram.main(SpcDemoProgram.scala)
该错误消息是否暗示必须在我的计算机上安装 Hadoop 和 Spark?
我需要做什么配置?
【问题讨论】:
-
您好!为了帮助您,您能否提供显示给您的所有错误消息?还是您提到您使用的 Scala 编写的程序?还是您正在运行的系统上的环境变量?
-
你好@Coursal 谢谢你的回复。我已经编辑了帖子以显示代码和错误消息。我没有在我的电脑上安装 Hadoop,所以我没有在我的电脑上放置任何关于 Hadoop 的环境变量或配置文件。
-
如果您需要将此程序运行到现有的一组服务器上,您需要从 那里 访问并运行它(可能使用
ssh或任何您的工具首选)已经安装了 Spark 和 Hadoop/HDFS 的位置。
标签: scala apache-spark hadoop