【问题标题】:pyspark dataframe is saved in s3 bucket with junk datapyspark 数据帧与垃圾数据一起保存在 s3 存储桶中
【发布时间】:2021-11-01 13:36:23
【问题描述】:

在尝试将 pyspark DataFrame 保存到 csv 并尝试直接存储 s3 存储桶时, 文件正在保存,但它有垃圾数据。所有文件大小均为 1B。 请帮助我在哪里做错了。

python 代码

df.write.options("header","true").csv("s3a://example/csv")

也试试这个代码

df.coalesce(1).write.format("csv").option("header", "true").option("path", "s3://example/test.csv").save()

但在 s3 存储桶中没有得到正确的 csv

csv 文件中的垃圾数据

【问题讨论】:

  • 您能详细说明一下数据吗?我无法理解垃圾数据部分。
  • 请注意,spark 将创建一个名为 test.csv 的文件夹,其中将是 csv 部分文件或在 coalesce() 的情况下整理的文件。文件名会使它看起来像是垃圾数据。但是,这只是 spark 使用的命名约定。文件中的内容将根据您的数据框。
  • 源系统和目标系统的编码是否相同?检查spark csv encoding

标签: python amazon-s3 pyspark


【解决方案1】:

我认为您将数据框保存为parquet,这是默认设置。

df.write.format("csv")
  .option("header", "true")
  .option("encoding", "UTF-8")
  .option("path", "s3a://example/csv")
  .save()

注意:语法也是option 而不是options

更新
正如@Samkart 提到的,您应该检查您的编码是否正确。我已更新我的答案以包含 encoding 选项。 pyspark 中的编码选项可以查看here

【讨论】:

  • 试过了,但问题就像在 s3bucket csv 中获取垃圾数据一样
猜你喜欢
  • 2021-07-23
  • 2019-11-07
  • 1970-01-01
  • 2018-02-02
  • 2020-07-29
  • 2022-01-13
  • 1970-01-01
  • 2021-11-17
  • 2021-05-29
相关资源
最近更新 更多