如何在Scala中将CSV文件上传至指定S3存储桶?
上传本地CSV文件到AWS S3存储桶的几种方法
前提条件
- 已配置AWS访问凭证(可通过
~/.aws/credentials文件、环境变量AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY,或在AWS托管服务(如EC2、ECS)上使用IAM角色) - 拥有目标S3存储桶的写入权限
方法1:使用boto3(AWS官方Python SDK)
- 安装boto3依赖:
pip install boto3
- 编写代码上传本地文件:
import boto3 # 初始化S3客户端 s3 = boto3.client('s3') # 本地文件路径 local_file_path = "/path/to/your/file.csv" # 目标S3存储桶名称 bucket_name = "your-target-bucket" # 上传后在S3中的文件名(可自定义,与本地文件名一致也可) s3_file_name = "uploaded_file.csv" # 执行上传操作 s3.upload_file(local_file_path, bucket_name, s3_file_name)
若需要指定AWS区域,初始化客户端时可添加region_name参数:
s3 = boto3.client('s3', region_name='us-east-1')
方法2:用pandas直接写入S3(跳过本地存储)
如果流程允许,无需先保存本地文件,可直接将DataFrame写入S3,更高效:
- 安装依赖:
pip install pandas s3fs
- 直接写入S3:
import pandas as pd # 假设df是你的目标DataFrame df.to_csv(f"s3://{bucket_name}/target_file.csv")
若未配置本地凭证文件,可手动传入密钥信息:
df.to_csv( f"s3://{bucket_name}/target_file.csv", storage_options={"key": "your-access-key", "secret": "your-secret-key"} )
方法3:使用AWS CLI命令
习惯命令行操作的话,直接用AWS CLI完成上传:
- 确保已安装并配置AWS CLI(配置命令:
aws configure) - 执行上传命令:
aws s3 cp /path/to/your/file.csv s3://your-target-bucket/uploaded_file.csv
还可添加参数设置存储类别,比如标准IA:
aws s3 cp /path/to/your/file.csv s3://your-target-bucket/uploaded_file.csv --storage-class STANDARD_IA
内容的提问来源于stack exchange,提问作者syndromel
相关产品推荐
相关产品推荐

