【问题标题】:pyspark writing csv file to S3 errorpyspark 将 csv 文件写入 S3 错误
【发布时间】:2018-06-14 00:40:57
【问题描述】:

我正在使用 pyspark,但在写入 S3 时遇到问题,但从 S3 读取没有问题。

这是我的代码:

dic = {'a': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 260, 'c4(%)': 4.79, 'c5': 78, 'c6': 352}, 'b': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 5, 'c4(%)': 0.09, 'c5': 2, 'c6': 280}, 'c': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 0, 'c4(%)': 0.0, 'c5': 0, 'c6': 267}}

df = pd.DataFrame(dic)

df.to_csv("s3://work/.../filename_2018-01-04_08:50:45.csv")

这是错误:

IOError: [Errno 2] No such file or directory: 's3://work/.../filename_2018-01-04_08:50:45.csv'

有什么问题?

【问题讨论】:

  • 我猜 DF 的 to_csv 方法将寻找写入本地文件系统中的某个位置并失败,因为本地没有这样的位置。您需要创建一个 Spark DF 而不是 Pandas DF,然后写入 s3
  • @ags29 如果我使用 spark dataFrame 它正在写入镶木地板,我希望在 S3 中有一个 CSV 文件。
  • 见下文,可以使用格式参数将其保存为 csv

标签: python amazon-s3


【解决方案1】:

请参阅我上面的评论,您需要使用 Spark DataFrame。实现此目的的一种简单方法是将 Pandas DF 上的索引转换为列,然后转换为 spark DF:

df2=sqlContext.createDataFrame(df.reset_index(drop=False))

然后使用:

df2.write.save("s3://work/.../filename_2018-01-04_08:50:45.csv", format='csv', header=True)

【讨论】:

  • 我明白了:TypeError: 'DataFrameWriter' object is not callable.
  • 对不起,我的错误,修改了上面的代码,打字跑在我的大脑之前 :) 尝试一下,让我知道它是否有效(可能需要一些调整,因为我现在无法访问 Spark检查——但基本上应该是正确的)
  • 回想一下,语法会根据你使用的 Spark 版本而有所不同,让我知道这是否适合你
  • 它不保存为单个 CSV 文件,仅保存为 parquet 之类的文件夹。
  • 我不相信您所要求的可以用 Spark 完成,请参阅 stackoverflow.com/questions/43661660/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 2020-04-07
  • 2021-09-12
  • 2017-03-11
  • 2019-01-16
相关资源
最近更新 更多