删除在 pyspark 中使用 numpy.savetxt 创建的 csv 文件

Posted

技术标签:

【中文标题】删除在 pyspark 中使用 numpy.savetxt 创建的 csv 文件【英文标题】:Deleting a csv file which is created using numpy.savetxt in pyspark 【发布时间】:2017-04-25 11:00:24 【问题描述】:

我是 pyspark 和 python 的新手。 使用numpy.savetxt("test.csv",file,delimiter=',')在本地系统中保存文件后 我正在使用 os 删除该文件。 os.remove("test.csv")。我收到一个错误 java.io.FileNotFoundException 文件文件:/someDir/test.csv 不存在。文件numpy.savetxt() 创建只有读取权限的文件。如何保存具有读写权限的相同内容。 使用火花 2.1 版

【问题讨论】:

spark 可能与这里无关,因为您正在使用 numpy 的 api 将文件保存在本地。你有没有手动检查numpy.savetxt之后文件是否真的存在于本地系统上? 是的,它确实存在于本地系统上。我最近观察到的另一件事是我无法从 pyspark shell 读取该 csv 文件。 要从本地文件系统读取,您必须提供完整地址,例如 - filerdd=sc.textFile("file:///path/to/file.txt") 我尝试了同样的方法,但我从 pyspark shell 中得到 File not found 异常。 这是堆栈跟踪文件“/apps/spark-2.1.0/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py”,第 319 行,在 get_return_value py4j .protocol.Py4JJavaError:调用 o36.load 时出错。 :org.apache.spark.SparkException:作业因阶段失败而中止:阶段 0.0 中的任务 0 失败 4 次,最近一次失败:阶段 0.0 中丢失任务 0.3(TID 3、30.0.0.167、执行者 0): java.io.FileNotFoundException: org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:611) 中不存在文件文件:/opt/center.csv 我使用的是 spark 2.1 python 3.4版本 【参考方案1】:

您的 spark 工作人员似乎无法访问该文件。您可能在不同的服务器上运行主服务器和工作人员。当您尝试处理文件时,在不同机器上设置工作人员时,请确保这些工作人员可以访问文件。您可以在完全相同的位置在所有工作人员之间保留相同的文件副本。始终建议使用像“hdfs://path/file”这样的 Hadoop 之类的 DFS。当您这样做时,工作人员可以访问这些文件。 更多详情: Spark: how to use SparkContext.textFile for local file system

【讨论】:

以上是关于删除在 pyspark 中使用 numpy.savetxt 创建的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 使用“覆盖”模式保存到 Redshift 表会导致删除表?

在 pyspark 数据框中使用 write.partitionBy 时如何删除重复项?

在 pySpark 中删除重复项的最佳方法

使用 PySpark 删除 Dataframe 的嵌套列

如何在pyspark中使用等效的熊猫轴来删除列而不是行?

从 pyspark 中删除 bigquery 表