【问题标题】:Is it not possible to save a file in S3 bucket instead of choose a folder?是否可以将文件保存在 S3 存储桶中而不是选择文件夹?
【发布时间】:2022-01-28 01:28:45
【问题描述】:

我正在尝试通过 AWS Glue Job 将数据文件保存到 S3。

我正在尝试使用 spark 数据框作为


df.coalesce(4).write.mode("overwrite").format("parquet").save("s3://my_own_bucket/")

当我测试它时,代码返回一个错误

pyspark.sql.utils.IllegalArgumentException: 'Can not create a Path from an empty string'

如果我尝试将文件放在类似的文件夹中


df.coalesce(4).write.mode("overwrite").format("parquet").save("s3://my_own_bucket/folder1")

文件放在文件夹“folder1

有人知道为什么我不能将文件夹放在存储桶级别的原因吗?

PS: 我也尝试过使用动态框架和作品。我想知道为什么使用“正常”火花不起作用。

final_sink = glueContext.write_dynamic_frame.from_options(frame = frame1, connection_type = "s3", connection_options = {"path": "s3://my_own_bucket"}, format = "parquet")

【问题讨论】:

  • 尝试删除第一个 sn-p 中的最后一个斜杠。
  • folder1 是您的情况下的对象键。失败的代码缺少对象键,因为它只包含 S3 存储桶名称 (my_own_bucket),因此出现错误。
  • 首先感谢您的回答。 @luk2302 我试过了,但错误是一样的
  • @Dunedan 那么如果我尝试使用动态框架,为什么效果会很好?

标签: amazon-web-services amazon-s3 aws-glue aws-glue-spark


【解决方案1】:

您好,请从路径中删除“/”

df.coalesce(4).write.mode("overwrite").format("parquet").save("s3://my_own_bucket")

【讨论】:

  • 嗨@Dhruv,感谢您的回复。我已经尝试过没有最后一个“/”,但错误是一样的。 IllegalArgumentException: '无法从空字符串创建路径'
【解决方案2】:

答案是“不”。您不能将 DF 写入任何文件系统的根目录,只是没有人尝试使用 file:// 或 hdfs:// 作为目标。根目录是“特殊的”——你不能删除它们,相对于根目录的路径是“”,等等。没有人坐下来添加这个功能

SPARK-34298

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 2020-06-14
    • 2022-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2020-11-24
    相关资源
    最近更新 更多