【问题标题】:Py4JJavaError: An error occured while calling o8660.save when trying to save csv file locallyPy4JJavaError:尝试在本地保存 csv 文件时调用 o8660.save 时发生错误
【发布时间】:2022-01-20 04:31:10
【问题描述】:

我想在本地保存一个 csv 文件,而不是将其保存到 Hadoop 文件系统。使用以

开头的路径时出现以下错误
> 'file://'

我该如何解决这个问题?或者如何在本地保存文件而不会出现任何错误?

【问题讨论】:

  • 请添加完整的错误信息。

标签: python dataframe apache-spark pyspark apache-spark-sql


【解决方案1】:

恐怕它不会那样工作,因为在本地保存数据意味着它必须全部存在于驱动程序中。根据pyspark docspyspark.sql.DataFrameWriter.csv 中的path 参数是“任何Hadoop 支持的文件系统中的路径”

据我所知,有几种选择:

  1. 将数据帧保存到 HDFS/Hadoop,然后将其复制到本地 FS hdfs dfs -mget ...。这将是最直接和首选的方式。
  2. 执行df.collect() 将完整的数据帧带到驱动程序,然后将其写入本地FS。这对于大型数据帧可能不可行,因为它可能会导致驱动程序因 OOM 崩溃。
  3. 使用df.toLocalIterator()将数据一次一个分区带到驱动程序,然后写入本地FS。这避免/减少了先前选项带来的 OOM 机会。

【讨论】:

  • 谢谢。我想如果它像这个页面一样>>kontext.tech/column/spark/357/…,那就更好了。由于该程序已经遵循您的首选但它只是一个临时文件(稍后在本地读取)所以我认为如果我可以在本地编写 csv 文件应该会更好。
猜你喜欢
  • 2021-11-14
  • 2019-06-29
  • 2021-12-31
  • 1970-01-01
  • 2019-05-15
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多