1. 在windows下启动spark程序,报错如下
java.io.IOException: (null) entry in command string: null chmod 0644 C:\Users\xxxx\AppData\Local\...
或者如下错误
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
解决方式:
- 创建目录:D:\setup\hadoop 用来保存hadoop相关文件
- 从https://github.com/steveloughran/winutils.git下载相关文件,注意hadoop版本,我的是3.0.0,所有使用hadoop-3.0.0文件夹下的文件
- 把hadoop-3.0.0下的文件copy到D:\setup\hadoop
- 配置环境变量:HADOOP_HOME=D:\setup\hadoop path添加 %HADOOP_HOME%\bin
2. spark程序提交到集群,报NoClassDefFoundError: scala/runtime/LambdaDeserialize
错误
如果程序在集群运行时,报如下错误
Caused by: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
基本上是由于集群的spark使用的scala版本与本地编译时使用的版本不一致导致的。
通过集群环境执行spark-shell,可以看到集群使用的scala版本为2.11.12
[hadoop@lfg01 ~]$ spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://lfg01:4040
Spark context available as 'sc' (master = local[*], app id = local-1571298365414).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.4
/_/
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_201)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
所以,本地开发环境上,下载scala 2.11.12,修改idea的sdk为2.11.12,重新打包、上传即可。
网友评论