この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ご機嫌いかがでしょうか、豊崎です。
re:Invent 2017 KeynoteにてS3 SELECTが発表されました!!
https://aws.amazon.com/jp/blogs/aws/s3-glacier-select/
特徴
- 新しいAPIを使用して、オブジェクト内のデータを選択および取得します。
- S3オブジェクトデータのサブセットを処理するアプリケーションの高速化します
- データアクセスのパフォーマンスを最大400%に高速化
- S3 SELECTを使用することで分析の高速化
コード例
import boto3
from s3select import ResponseHandler
class PrintingResponseHandler(ResponseHandler):
def handle_records(self, record_data):
print(record_data.decode('utf-8'))
handler = PrintingResponseHandler()
s3 = boto3.client('s3')
response = s3.select_object_content(
Bucket="super-secret-reinvent-stuff",
Key="stuff.csv",
SelectRequest={
'ExpressionType': 'SQL',
'Expression': 'SELECT s._1 FROM S3Object AS s'',
'InputSerialization': {
'CompressionType': 'NONE',
'CSV': {
'FileHeaderInfo': 'IGNORE',
'RecordDelimiter': '\n',
'FieldDelimiter': ',',
}
},
'OutputSerialization': {
'RecordOrder': 'STRICT',
'CSV': {
'RecordDelimiter': '\n',
'FieldDelimiter': ',',
}
}
}
)
handler.handle_response(response['Body'])
さいごに
高速なS3へのSQLが発表されました!!今後、Athenaとのユースケースの違いを含めて触っていきたいと思います。
現在プレビューの申し込みが可能です。
早く使って見たい!!