我正在 Windows 7 中的 Jupyter 笔记本 (Python 2.7) 上的 PySpark 中工作。我有一个类型为 pyspark.rdd.PipelinedRDD
的 RDD。叫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 字节。
最佳答案
您缺少winutils.exe
一个 hadoop 二进制文件。根据 x64 位/x32 位系统下载 winutils.exe
文件并将您的 hadoop home 设置为指向它。
第一种方法:
- 下载文件
- 在系统中创建
hadoop
文件夹,例如C:
- 在
hadoop
目录中创建bin
文件夹,例如:C:\hadoop\bin
- 将
winutils.exe
粘贴到bin
中,例如:C:\hadoop\bin\winutils.exe
- 在系统属性中的用户变量中 -> 高级系统设置
创建新变量
名称:HADOOP_HOME
路径:C:\hadoop\
第二种方式:
您可以使用以下命令直接在 Java 程序中设置 hadoop home:
System.setProperty("hadoop.home.dir","C:\hadoop" );
关于windows - Pyspark 上 saveAsTextFile() 中命令字符串异常中的(空)条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238744/