流和(反)序列化没有本地封装的s3对象
s3-streaming的Python项目详细描述
S3流:处理(大)S3文件,如常规文件
在s3中存储、检索和使用文件是一项常规活动,因此应该很容易。它也应该…
- 数据流
- 有一个类似python文件io的api
- 处理一些去searization和压缩的东西,因为为什么不
安装
pip install s3-streaming
流式处理S3对象,如常规文件
基础知识
打开和读取s3对象类似于常规的python io。唯一的区别是你需要提供
boto3.session.Session
处理bucket访问的实例。
importboto3froms3streamingimports3_openwiths3_open('s3://bucket/key',boto_session=boto3.session.Session())asf:fornext_lineinf:print(next_line)
在流中注入反序列化和压缩处理
考虑一个压缩文件gzip
,包含json
行。在处理这个问题上有一些样板,
但为什么要麻烦呢?在溪流中处理。
froms3streamingimports3_open,deserialize,compressionreader_settings=dict(boto_session=boto3.session.Session(),deserializer=deserialize.json_lines,compression=compression.gzip)withs3_open('s3://bucket/key.gzip',**reader_settings)asf:fornext_lineinf:print(next_line.keys())# because the file was decompressed ...print(next_line.values())# ... and the json is now a loaded dict!
其他选项包括
csv
csv_as_dict
tsv
tsv_as_dict