Windows10下 用IDEA编写scala程序导入sparkjar包在本地local模式下跑
会遇到以下几个问题:
- Could not locate executable null\bin\winutils.exe in the Hadoop binaries
解释一下这个问题,一般会报错,典型的没有winutils.exe文件导致的错误
记住这个shell.335的错,我们看源码点进去
报错的原因是hadoop_home_dir没有
仔细找我们发现是通过checkHadoopHome()
方法获得的变量,继续看一下
到这里我们就清楚了,最开始可以通过程序写进去hadoop的路径,例如:
System.setProperty(“hadoop.home.dir”,“E:\Spark\hadoop-common-2.2.0-bin-ma” )
当然也可以不写,这样就可以走system.getenv方法直接从配置环境变量中获取也可以
这里给大家一个路径,可以下载各个版本的winutils.exe文件,因为版本不对也会导致报错
https://github.com/4ttty/winutils/tree/master
下载完毕后记得放在非中文路径下避免检测不到
然后配置环境变量HADOOP_HOME 然后运行即可
-
有的时候即使配置了环境变量运行多次依然没有效果可能是你的IDEA已经有了默认的环境变量所以此时重启IDEA再次运行可能就会成功
-
org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V
如果你报的是这个错,代表你的hadoop.dll版本不对应
需要下载和你spark-hadoop版本相对应的hadoop.dll
即可
IDEA打包常见错误:
打包出来的文件是一个文件夹而不是一个jar包
原因:
右上角可能变成other,所以需要改成jar类型
注意:
打成jar的这个减号不要老是点
因为点完以后再次设置的时候会包错
你可以在右边更改配置,但是不要老是删除
如果报错,可以直接将out文件夹删除,里面存放着编译好的class文件和jar包信息
然后重试即可!
在spark集群中跑jar包可能会遇到加载不到主类的情况,可能是你的类名或者jar包的位置没有写清楚
仔细看即可!
- 如果是你的main方法中什么都没写,就写了个println打印结果报错:
Error running ‘Test_Demo’: Command line is too long. Shorten command line for Test_Demo or also for Application default configuration.
翻译:运行“test_demo”时出错:命令行太长。缩短测试演示或应用程序默认配置的命令行。
这是因为你配置的jar包所在位置的命令行太长了,超出限制
解决办法:
修改项目下 .idea\workspace.xml,找到标签 , 在标签里加一行