【AWS】 S3 Select에서 S3 파일에서 필요한 데이터를 검색하여 취득
하고 싶은 일
S3 Select를 사용하여 S3 파일을 SQL 쿼리로 검색하여 필요한 레코드를 얻고 싶습니다.
즐거운 일
S3 Select 포인트
S3의 콘솔 화면에서 조작해보기
이번에는 다음 형식의 샘플 파일을 S3에 배치하여 검증합니다.
sample.tsv
male 14 student
female 26 employee
male 32 selfemployed
male 45 unemployed
female 11 student
male 24 employee
male 33 selfemployed
male 49 unemployed
female 57 unemployed
S3 콘솔 화면에서 대상 파일을 선택하고 S3 Select 탭을 선택합니다.
파일 형식: CSV
구분 기호: 탭
압축: 없음
"다음"
실행할 SQL을 입력합니다.
첫 번째 열이 "female"의 레코드를 얻고 싶습니다.
SQL
select * from s3object s where s._1 = 'female'
제대로 얻을 수 있었습니다.
"다운로드"를하면 CSV 파일로 다운로드할 수 있습니다.
샘플 SQL이 몇 가지 있으므로 시도해보십시오.
EC2 인스턴스에서 Python으로 SQL 쿼리 실행
EC2 인스턴스에서 Python에서 SQL 쿼리를 실행하는 패턴도 시도해 보겠습니다.
먼저 필요한 Python을 설치합니다.
# Python3をインストール
$ sudo yum update -y
$ sudo yum install python3 -y
# 仮想環境の有効化
$ python3 -m venv ~/s3select_example/env
$ source ~/s3select_example/env/bin/activate
# boto3をインストール
$ pip install pip --upgrade
$ pip install boto3
그런 다음 Python 파일을 만듭니다.
S3Select.py
import boto3
s3 = boto3.client('s3')
resp = s3.select_object_content(
Bucket='my-bucket.01',
Key='sample/sample.tsv',
ExpressionType='SQL',
Expression="SELECT * FROM s3object s where s._1 = 'female'",
InputSerialization = {'CSV': {"FileHeaderInfo": "NONE", 'FieldDelimiter': '\t'}, 'CompressionType': 'NONE'},
OutputSerialization = {'CSV': {}},
)
for event in resp['Payload']:
if 'Records' in event:
records = event['Records']['Payload'].decode('utf-8')
print(records)
Bucket과 Key는 S3의 읽어들이는 파일에 맞추어 주세요.
그리고, 이번 대상 파일이 탭 단락이므로, InputSerialization의 FieldDelimiter에는 「'\t'」를 지정하고 있습니다.
그럼 실행해 보겠습니다.
$ python S3Select.py
female,26,employee
female,11,student
female,57,unemployed
콘솔 화면에서 실행한 결과와 같은 레코드가 출력되었습니다!
이번에는 S3의 파일을 SQL 쿼리로 직접 검색하여 대상 레코드를 가져 왔습니다.
S3의 파일에 대해서 조사를 실시하는 일이 있거나 하기 때문에, 기회가 있으면 사용해 가고 싶습니다.
참고 : htps : // 아 ws. 아마존. 코 m / jp / b ぉ gs / 네 ws / 쿠에리 ぃ g ー ー ー ぃ お t せ r ゔ ぇ rs ー r 세 ct /
Reference
이 문제에 관하여(【AWS】 S3 Select에서 S3 파일에서 필요한 데이터를 검색하여 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/flySheep/items/45192da88a4ba86638a2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)