1

对于这个简单的用例,我很难找到一个在线遵循的示例:

将 CSV 文件从 s3 对象位置加载到 julia DataFrame。

这是我尝试但没有用的方法:

using AWSS3, DataFrames, CSV

filepath = S3Path("s3://muh-bucket/path/data.csv")

CSV.File(filepath) |> DataFrames            # fails

# but I am able to stat the file
stat(filepath)

#=
Status(  mode = -rw-rw-rw-,
  ...etc  
  size = 2141032 (2.0M),
  blksize = 4096 (4.0K),
  blocks = 523,
  mtime = 2021-09-01T23:55:26,
  ...etc
=#

我还可以将文件读入本地的字符串对象:

data_as_string = String(AWSS3.read(filepath);
#"column_1\tcolumn_2\tcolumn_3\t...etc..."

我的 AWS 配置是有序的,我可以在本地从 julia 访问该对象。

如何将其放入数据框中?

4

1 回答 1

2

感谢 julia slack 频道 (#data) 上好心人的帮助。

bytes = AWSS3.read(S3Path("s3://muh-bucket/path/data.csv"))

typeof(bytes)
# Vector{UInt8} (alias for Array{UInt8, 1})

df = CSV.read(bytes, DataFrame)

宾果,我在做生意。CSV.jl 维护者提到 S3Path 类型在传递给 CSV.read 时可以正常工作,所以将来这可能会更简单。

有用的 SO 帖子,用于按顺序获取 AWS 配置

于 2021-09-10T03:44:36.340 回答