Windows 8.1运行Apache Spark报错:SparkContext初始化失败,Spark URL无效
Hey there, let's tackle this issue you're facing with Spark 2.3.0 on Windows 8.1. First, let's unpack what's showing up in your output:
执行spark-shell命令时出现如下日志信息:
C:\spark\spark-2.3.0-bin-hadoop2.7\bin>"C:\new\spark\spark-2.3.0-bin-hadoop2.7\bin\spark-submit2.cmd" --class org.apache.spark.repl.Main --name "Spark shell" 2018-04-17 20:30:21 WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Setting default log level to "WARN". To adjust logging level use sc.setLogLeve...
先理解第一个警告:NativeHadoop库加载失败
这个警告是Windows上运行Spark+Hadoop的常见问题——Hadoop的原生库(用于优化I/O、压缩等底层操作)主要是为Linux/Unix平台编译的,官方没有提供Windows版本的预编译库。不过别慌,这个警告大多时候不影响Spark的基础计算功能,但如果之后要用到HDFS、HBase这类Hadoop生态组件,可能会出现功能受限的情况。
解决步骤(彻底消除警告+保证兼容性)
下载Windows适配的Hadoop原生库
找对应你Hadoop版本(这里是2.7)的Windows二进制包,比如hadoop-2.7.1-winutils这类资源。解压后你会看到winutils.exe、hadoop.dll等关键文件。配置环境变量
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 新建系统变量
HADOOP_HOME,值设为你刚才解压的Hadoop原生库的根目录(比如C:\hadoop-winutils-2.7.1) - 编辑系统变量
Path,添加%HADOOP_HOME%\bin到列表里
复制关键文件到系统目录
把解压文件夹里的hadoop.dll复制到C:\Windows\System32文件夹下,这一步是为了确保系统全局能找到这个库文件,避免运行时出现加载错误。重启验证
关掉所有打开的命令提示符,重新打开一个新窗口,再运行spark-shell,那个NativeCodeLoader的警告应该就消失了。
关于日志级别的提示
最后那条日志提示是说Spark默认用WARN级别输出日志,如果你想看到更详细的运行信息(比如调试细节),可以在spark-shell里执行:
sc.setLogLevel("INFO")
或者想永久修改日志级别,复制spark/conf/log4j.properties.template为log4j.properties,然后修改里面的log4j.rootCategory=WARN, console为你想要的级别(比如INFO、DEBUG)。
内容的提问来源于stack exchange,提问作者Rafał

