我想以拼图格式在我的s3存储桶中写入我的数据帧。我知道如何以csv格式编写数据帧。但是我不知道怎么用拼花的格式写。下面是csv格式的代码(我没有显示字段ServerSideEncryption和SSEKMSKeyId,但我在实际代码中使用了它们):
csv_to_write = df.to_csv(None).encode()
s3_client.put_object(Bucket=bucket_name,Key='data.csv', Body=csv_to_write,
ServerSideEncryption='XXXXX', SSEKMSKeyId='XXXXXXXX')
有没有同样的拼花地板?谢谢
发布于 2020-01-13 17:28:07
对于python 3.6+,AWS有一个名为
aws-data-wrangler
这有助于Pandas/S3/Parquet之间的集成
安装do;
pip install awswrangler
如果你想把你的pandas数据帧作为一个拼图文件写到S3上就行了;
import awswrangler as wr
wr.s3.to_parquet(
dataframe=df,
path="s3://my-bucket/key/my-file.parquet"
)
如果你想添加加密,做;
import awswrangler as wr
extra_args = {
"ServerSideEncryption": "aws:kms",
"SSEKMSKeyId": "YOUR_KMS_KEY_ARN"
}
sess = wr.Session(s3_additional_kwargs=extra_args)
sess.s3.to_parquet(
dataframe=df,
path="s3://my-bucket/key/my-file.parquet"
)
发布于 2019-11-28 02:41:46
假设您的数据帧名为df,请使用以下代码首先将其转换为拼接格式并存储。然后将此拼图文件上传到s3。
import pyarrow as pa
import pyarrow.parquet as pq
import boto3
parquet_table = pa.Table.from_pandas(df)
pq.write_table(parquet_table, local_file_name)
s3 = boto3.client('s3',aws_access_key_id='XXX',aws_secret_access_key='XXX')
s3.upload_file(local_file_name, bucket_name, remote_file_name)
发布于 2021-03-01 20:31:55
上面使用AWS Wrangler的解决方案非常好,但当我尝试使用上面的示例时,假设库已经更改,我确实得到了一个错误。下面的方法对我很有效:
wr.s3.to_parquet(df, path=f"s3://{output_bucket}/{output_key}.parquet", index=False)
https://stackoverflow.com/questions/59076204
复制相似问题