You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用AWS/AWSS3将Parquet文件上传至S3的可行示例

问题分析与解决方案

你的核心问题是:当前代码并没有上传本地Parquet文件的实际内容,而是把文件名的字符串写入了S3对象,导致生成的20B文件完全不是有效的Parquet格式(字符串"my_local_file.parquet"的字节长度刚好匹配这个大小,结尾的"quet"也对应报错信息)。

正确的上传方式

方法1:读取本地文件内容后写入S3Path

先读取本地Parquet文件的二进制内容,再写入S3路径,这是最直接的修正:

p = S3Path("s3://bucket/folder/my_local_file.parquet")
# 读取本地Parquet文件的完整二进制数据
local_parquet_data = read("my_local_file.parquet")
# 将二进制数据写入S3对象
write(p, local_parquet_data)

方法2:使用AWSS3.jl的专用上传函数

如果你使用的是AWSS3.jl包,可以直接调用upload或s3_put函数,更简洁且不易出错:

using AWSS3

# 方式一:直接指定本地文件和S3路径
upload("my_local_file.parquet", "s3://bucket/folder/my_local_file.parquet")

# 方式二:分桶和路径参数传入
s3_put("bucket", "folder/my_local_file.parquet", read("my_local_file.parquet"))

额外注意事项

  • 确保本地文件路径正确:如果脚本不在Parquet文件所在目录,要使用完整路径(比如"/home/user/data/my_local_file.parquet")
  • 验证S3权限:确认你的AWS凭证拥有目标bucket的PutObject权限
  • 若直接生成Parquet到S3:如果是从DataFrame等数据结构生成Parquet,可直接通过IO流写入S3,避免本地文件中转:
    using DataFrames, Parquet, AWSS3
    
    df = DataFrame(a=1:10, b=rand(10))
    io = IOBuffer()
    write_parquet(io, df)
    seekstart(io)
    upload(io, "s3://bucket/folder/generated.parquet")
    

内容的提问来源于stack exchange,提问作者awoj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:02:38