brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Sep 04. 2021

ETC : S3 Parquet & AwsWrangler

#쉬운길 #더 쉬운길

AWS S3 에는 이세상 모든 데이터가 모여있을 것 같단 생각.


데이터 프로세싱을 통해서 만들어놓은 정보들이 있다.

Parquet 포맷으로 저장을 했다.


뭐 csv or json 다 상관은 없지만 parquet은 schema를 가지고 있어서

좀 더 편하게 핸들링 할 수 있다.


근데,

젤 귀찮은게 S3 외부에서 Python으로 데이터를 받아서 뭔가를 처리하려고 할 때,

라이브러리로 만들어 두었지만 뭔가 늘 귀찮고 지저분하다는 느낌이 드는데,

역시나 내가 만들어서 그런 듯 한다.


여기 AWS-WRANGLER 라는 라이브러리가 있다.

간단하게 Path 만 전달하면 해당 위치의 Parquet 파일을 읽어올 수 있다.


사실 엄청난 기타 기능들이 많다.

https://aws-data-wrangler.readthedocs.io/en/stable/tutorials/004%20-%20Parquet%20Datasets.html


꼭 한 번 확인해봐야할 유용한 라이브러리 라는 생각이 든다.

개발자는 읽고 쓰는 기능만 사용할 수 있지만,

인프라 쪽에서도 다양한 기능을 편하게 사용 할 수 있지 않을까? 라는 생각이 들었다.


안타깝게도 ORC 타입은 지원이 안되는  하다.


내가 사용한 방식은 간단하게 S3 Parquet 데이터를 읽는 기능을 활용하는 것이었다.


import awswrangler as wr

wr.s3.read_parquet(path=f"s3://{bucket}/{key}/sik.parquet/", dataset=True)



dataset=True 옵션은 모든 파티션을 읽어들이고 결과를 반환한다.

하나의 파티션을 지정해서 읽고 싶다면 dataset=False 가 맞다.


당연히 쓰기는 wr.s3.to_parquet(...) 이다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari