spark 程序 TopN FileSort SecondarySort 的出错解决办法

文章更新于:2020-06-09

一、TopN 常见错误

1.1、运行程序失败:Connection refused

当执行程序以后出现以下异常:

【问题所在】检查是否你程序使用 hdfs:// 地址而你的hadoop 又没有启动。
【解决方法】
你可以启动 hadoop 之后重试,
或者将 hdfs:// 换成 file:// 改用本地存储。

启动hadoop 命令:<hadoop 安装地址>/sbin/start-dfs.sh
查看已启动节点命令:jps

1.2、运行程序失败:Input path does not exist

当执行程序以后出现以下异常:

【问题所在】检查你程序中指定的数据输入地址是否已经创建。
【解决方法】
本地创建目录请使用命令:mkdir -p <目录>
hdfs 创建目录请使用命令:hdfs dfs -mkdir -p <目录>

注意:hdfs 创建目录时,如果指定的目录不以斜线”/”开头,则视其为相对地址,
hdfs 默认相对地址为 /user/<用户名>/ 开头

1.3、程序运行无结果:为啥没有输出?

当执行程序以后没有任何结果输出:

【问题所在】一般来讲,有输入才有输出。
【解决方法】
检查你的程序输入文件夹内是否存放了需要的数据文件。
上传本地文件到 hdfs 请使用命令:hdfs dfs -put <文件> <hdfs目录>

1.4、程序运行出错:For input string (600错误)

当执行程序以后出现以下异常:

【问题所在】输入数据中600前面多了个空格:

【解决方法】
如果你使用的是本地文件系统,直接修改文件后重新运行程序即可。

如果你使用的是hdfs文件系统,你需要先删除hdfs上的该文件。
执行命令:hdfs dfs -rm <hdfs文件地址>

然后在本地将600前面的空格删除后重新上传文件至hdfs。
执行命令:hdfs dfs -put <文件名> <hdfs 目录>

二、FileSort 常见错误

2.1、代码出现红叉:编码错误

粘贴代码以后出现红叉如图:

【问题所在】由于编码引起的错误
【解决方法】删掉红线标出的空格即可消除该错误。

2.2、程序运行失败:A master URL must be set in your configuration

当执行程序以后出现以下异常:

【问题所在】检查你程序的 val conf 行是否缺少指定spark 的启动模式
【解决方法】
在代码中指定spark 的启动模式,如图示。

2.3、程序结果保存失败:Mkdirs failed to create xxx

【问题所在】目测是由于拼写错误导致存储路径产生的权限问题。
【解决方法】指定一个不需要特权的目录

2.4、程序结果保存失败:Output directory already exists

当执行程序以后出现以下异常:

【问题所在】保存结果的文件夹不能提前存在,否则报错。
【解决方法】重复运行前,请先删除之前的结果文件夹。

三、Secondary 常见错误

3.1、程序无法运行:没有 run as scala application

首先,二次排序程序有两个文件,SecondarySort.scala 调用 SecondarySrotKey.scala 文件。
运行时只需运行 SecondarySort.scala 即可。

当执行程序以后出现以下异常:

【问题所在】好奇怪哦,是不是包名指定错误了。
【解决方法】删掉包名指定,或指定为正确的包名。

【注意】两个程序源文件都要删掉此行,不然会产生如下错误

3.2、程序执行错误,空行错误

当执行程序以后出现以下异常:

【问题所在】程序输入文件尾部有空行
【解决方法】删掉再行继续。

四、其他常见错误

4.1、sbt eclipse 打包错误:Not a valid command

当打包程序以后出现以下异常:

【问题所在】检查你项目目录下 <>/project/build.properties 文件是否存在并内容正确
【解决方法】此文件内写有你 sbt 的版本号,如你有两个sbt 版本比如 0.13 和 1.3.8 选择安装过插件的。
示例如下:
sbt.version=0.13.15

4.2、sbt eclipse 打包错误:Could not create Eclipse project files

当执行程序以后出现错误提示:Not found & Could not create Eclipse project files

【问题所在】检查你的项目目录下 build.sbt 内各版本号是否写对。
【解决方法】
样例如下:

name := "topn"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"

4.3、sbt eclipse 打包失败

当打包程序以后出现以下异常:

【问题所在】内存不够用了哒。
【解决方法】
如果你同时开启了eclipse,可以先关掉eclipse再行打包。
如果还是不行,考虑增加一下虚拟机的内存。

4.4、导入项目到eclipse失败:No projects are found to import

导入项目到eclipse出现以下异常:

【问题所在】路径指定错误或项目没有打包成功。
【解决方法】先检查你的路径是否指定正确,再考虑其他问题。
路径指定到你打包项目的位置或上一级均可。
如果还是不行,考虑重新打包程序。

4.5、导入项目到eclipse后,出现版本错误:Scala Version Problem

当导入程序以后,出现以下异常:

【问题所在】项目默认的scala版本与系统安装的不匹配。
【解决方法】更改你的scala 编译器版本为你机器上用的版本即可。
项目名上右键选择 properties ,然后更改。

4.6、无法运行项目,无法: Run As scala application

当意图运行程序时出现以下异常:

【问题所在】文件类型不对,或源代码中包名指定错误。
【解决方法】先检查你的源代码文件名是否以 .scala 为结尾。
再考虑代码中是否包名指定错误。

4.7、代码出现红叉:not found: type SparkConf

当编写好代码时,出现以下异常:

【问题所在】没有对应的库文件或其他依赖文件。
【解决方法】检查你的项目打包声明文件里面是否声明了 spark 依赖信息。

比如当你只声明以下信息的时候,依然可以打包成功,但是无法使用 SparkConf

这种情况,需要你在声明文件中加入所需依赖信息,并重新打包。
然后eclipse 中刷新项目即可。

4.8、程序运行失败:System memory not enough

当你运行程序时,出现以下异常信息:

【问题所在】内存不够用哒。

【解决方法】
这种情况你可以在代码中加入:conf.set("spark.testing.memory", "477859200") 来解决。
数字比报错要求的大即可。

也可以在项目设置中添加参数:-Dspark.testing.memory=481859200 来解决。
如下图所示:

<全文完>

posted @ 2020-06-09 08:26  那个白熊  阅读(333)  评论(0编辑  收藏  举报