问题描述
您缺少 winutils.exe hadoop二进制文件。取决于x64位/ x32位系统下载winutils.exe文件并设置您的hadoop home指向它。
第一种方式:
- 下载档案
- hadoop在系统中创建文件夹,例如C:
- bin在hadoop目录中创建文件夹,例如:C:\hadoop\bin
- 粘贴
winutils.exe
在bin
,例如:C:\hadoop\bin\winuitls.exe
- 在系统属性的用户变量中->高级系统设置
创建新的变量名称:
HADOOP_HOME
路径:C:\hadoop\
第二种方式:
您可以使用以下命令在Java程序中直接设置hadoop home:
System.setProperty("hadoop.home.dir","C:\hadoop" );
解决方法
我正在Windows 7的Jupyter笔记本(Python 2.7)上的PySpark中工作。我有一个RDD类型,pyspark.rdd.PipelinedRDD称为idSums。尝试执行时idSums.saveAsTextFile(“Output”),出现以下错误:
Py4JJavaError: An error occurred while calling o834.saveAsTextFile.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 33.0 failed 1 times,most recent failure: Lost task 1.0 in stage 33.0 (TID 131,localhost): java.io.IOException: (null) entry in command string: null chmod 0644 C:\Users\seride\Desktop\Experiments\PySpark\Output\_temporary\0\_temporary\attempt_201611231307_0033_m_000001_131\part-00001
我认为RDD对象应该没有任何问题,因为我能够执行其他操作而不会出错,例如,执行idSums.collect()会产生正确的输出。
此外,将Output创建目录(包含所有子目录)并part-00001创建文件,但该文件为0字节。