Pyspark上saveAsTextFile()中命令字符串异常中的(null)条目

问题描述

您缺少 winutils.exe hadoop二进制文件。取决于x64位/ x32位系统下载winutils.exe文件并设置您的hadoop home指向它。

第一种方式:

  1. 下载档案
  2. hadoop在系统中创建文件夹,例如C:
  3. bin在hadoop目录中创建文件夹,例如:C:\hadoop\bin
  4. 粘贴winutils.exebin,例如:C:\hadoop\bin\winuitls.exe
  5. 在系统属性用户变量中->高级系统设置 创建新的变量名称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字节。

相关问答

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
JavaMail问题:无法将命令发送到SMTP主机