1

我正在从 S3 下载一个文件(确切地说是一组镶木地板文件)并将其转换为 Pandas DataFrame。我正在使用 Pandas 函数执行此操作read_parquet,并且s3fs如此处所述:

df = pd.read_parquet(f's3://{bucket}/{path}')

但是,到目前为止,我只能通过环境变量或 AWS 配置文件进行身份验证。由于公司标准,我希望通过局部变量进行身份验证,例如我们使用的方式pyarrow.parquet

fs = s3fs.S3FileSystem(key=config.AWS_ACCESS_KEY_ID, secret=config.AWS_SECRET_ACCESS_KEY)
df = pq.ParquetDataset(f's3://{bucket}/{path}', filesystem=fs).read().to_pandas()

有没有办法做到这一点read_parquet?我不能filesystem用它来争论吗?

如果有人好奇,我没有使用pq.ParquetDataset它,因为它太慢了(我不知道为什么)。

4

1 回答 1

0

我认为您可以将类似文件的对象传递给pandas.read_parquet

with fs.open(f's3://{bucket}/{path}') as fp:
  pq.read_parquet(fp)
于 2022-02-09T09:13:55.073 回答