如何使用R对S3中Parquet Gzip格式数据进行读写操作
在R中读写S3上的Parquet Gzip格式数据
嘿,我来帮你搞定这个需求!要在R里读取S3指定Bucket下的Parquet Gzip文件,还能把数据写回S3,咱们用几个专门的R包就能轻松实现,步骤很清晰:
1. 安装并加载必要的R包
核心用arrow包就够了——它对Parquet格式和S3存储的支持非常完善,还能自动处理Gzip压缩;另外可以搭配aws.s3包辅助S3身份验证(当然arrow也能直接读取本地AWS配置,两种方式都灵活)。
先安装包:
install.packages(c("arrow", "aws.s3"))
然后加载到环境中:
library(arrow) library(aws.s3)
2. 配置S3访问权限
要让R能访问你的S3存储,得先配置身份验证,推荐两种方式:
- 方式一:通过环境变量设置密钥(安全便捷)
在R里直接设置你的AWS访问密钥和区域:Sys.setenv( AWS_ACCESS_KEY_ID = "你的AWS Access Key", AWS_SECRET_ACCESS_KEY = "你的AWS Secret Key", AWS_DEFAULT_REGION = "你的S3存储区域,比如us-east-1" ) - 方式二:复用本地AWS CLI配置
如果你已经在本地电脑上配置过AWS CLI(比如~/.aws/credentials文件里有凭证),arrow会自动读取这些配置,不用额外设置。
3. 读取S3上的目标Parquet Gzip文件
你要读取的文件路径是s3://c/Audit/test_gzip.parquet,用arrow的read_parquet()函数直接读取就行,它会自动识别Gzip压缩格式,不用额外参数:
# 构造S3文件路径 target_s3_path <- "s3://c/Audit/test_gzip.parquet" # 读取文件到R数据框 df <- read_parquet(target_s3_path) # 可以先查看前几行确认数据读取成功 head(df)
4. 将数据写回S3(Parquet Gzip格式)
如果修改数据后要写回S3,比如写回到同一个Bucket的Audit文件夹下的新文件,用write_parquet()函数,指定compression = "gzip"就能生成Gzip压缩的Parquet文件:
# 构造写回的S3路径,比如命名为new_test_gzip.parquet write_back_s3_path <- "s3://c/Audit/new_test_gzip.parquet" # 写入数据,指定Gzip压缩 write_parquet(df, write_back_s3_path, compression = "gzip")
小提示
- 如果你的S3 Bucket是私有的,要确保你的AWS密钥拥有对应的权限:读取需要
s3:GetObject,写入需要s3:PutObject。 arrow包处理大文件的性能很棒,比很多其他R包效率更高,适合处理大规模的Parquet数据。
内容的提问来源于stack exchange,提问作者Nikita Agarwal
相关产品推荐
相关产品推荐

