You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用R无需本地下载直接读取AWS S3存储桶中的Parquet文件?

直接从AWS S3读取Parquet文件(无需本地存储)

当然可以直接从S3读取Parquet文件,不用先下载到本地!在R里有几种简洁高效的实现方式,下面给你详细说明:

方法1:使用arrow包(推荐)

arrow包对Parquet格式和S3存储有原生支持,不仅能直接读取,还支持分块加载、列筛选等性能优化,非常适合处理大文件。

步骤:

  1. 先安装并加载包:
install.packages("arrow")
library(arrow)
  1. 直接读取S3上的Parquet文件:
    • 如果你的本地环境已经配置了AWS凭证(比如通过AWS CLI设置了~/.aws/credentials,或者在EC2/EKS实例上绑定了有S3访问权限的IAM角色),可以直接用S3路径读取:
    s3_parquet_path <- "s3://my-bucket/Financial_Sample.parquet"
    df <- read_parquet(s3_parquet_path)
    
    • 如果需要手动指定AWS密钥:
    # 创建S3桶连接对象
    s3_bucket_obj <- s3_bucket(
      bucket = "my-bucket",
      access_key = "你的AWS访问密钥",
      secret_key = "你的AWS秘密密钥"
    )
    # 读取文件
    df <- read_parquet(s3_bucket_obj$path("Financial_Sample.parquet"))
    

方法2:aws.s3 + arrow 内存读取

如果习惯用aws.s3包,也可以把文件读取到内存中,再解析为DataFrame,适合小文件场景:

  1. 安装并加载所需包:
install.packages(c("aws.s3", "arrow"))
library(aws.s3)
library(arrow)
  1. 内存读取实现:
# 将S3文件读为raw格式的内存对象
parquet_raw_data <- get_object(
  object = "Financial_Sample.parquet",
  bucket = "my-bucket"
)
# 从内存连接中解析Parquet
df <- read_parquet(rawConnection(parquet_raw_data))

注意事项:

  • 确保你的运行环境有访问目标S3桶的权限:可以通过IAM角色、环境变量(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY)或者本地凭证文件配置。
  • 处理超大Parquet文件时,优先用arrow的原生S3读取,它支持分块加载,不会把整个文件加载到内存,避免内存溢出。

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

火山引擎 最新活动