Windows环境下Spark调用saveAsTextFile报错问题求助
解决Windows下Spark saveAsTextFile报错ExitCodeException -1073741701的问题
这个错误我之前在Windows上用Spark的时候也碰到过,根源就是Spark依赖的Hadoop本地工具(winutils.exe)缺失——因为Windows系统没有自带Hadoop需要的底层文件操作组件,导致写入本地文件时触发异常。下面是一步步的解决方法:
步骤1:确认Spark对应的Hadoop版本
先搞清楚你的Spark是基于哪个Hadoop版本编译的:打开PySpark Shell时,开头的日志里会显示类似Using Hadoop jar files: hadoop-2.7.3.jar这样的信息,记下来这个版本号。
步骤2:下载匹配的winutils工具包
找和你Hadoop版本对应的winutils压缩包(选64位的,现在基本都是64位系统),解压到一个固定路径比如C:\hadoop,解压后你会在C:\hadoop\bin里看到winutils.exe和hadoop.dll这些核心文件。
步骤3:配置系统环境变量
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量里新建
HADOOP_HOME,值设为你刚才解压的路径(比如C:\hadoop) - 编辑系统变量里的
Path,添加%HADOOP_HOME%\bin
步骤4:重启PySpark并修正细节
- 关闭当前的PySpark Shell,重新打开(环境变量需要重启程序才会生效)
- 还有个小细节要注意:你的输出路径拼写错了——
C:/Java/ouput应该是C:/Java/output;另外要确保这个路径不存在,Spark不会自动覆盖已存在的目录,所以提前删掉这个文件夹再执行代码:nums = sc.parallelize([1,2,3]) nums.saveAsTextFile("file:///C:/Java/output")
这样应该就能正常完成文件写入了。
内容的提问来源于stack exchange,提问作者learning_dev




