1 S3 버킷 데이터 읽어오기

S3 데이터는 .csv, .xlsx 등 친숙한 파일 형태로 있을 수 있지만, 빅데이터를 효과적으로 저장하기 위해서 .parquet 형태로 저장되어 있기도하다. 이를 불러들여 처리하기 위해서 두가지 조합이 필요하고 데이터 사이언스 언어(R/파이썬)에 따라 두가지 조합이 추가로 필요하다.

  • S3 .csv: EC2 인스턴스 파이썬 판다스, RStudio 서버
  • S3 .parquet: 스파크 클러스터 pyspark, RStudio sparklyr

스파크 쥬피터 노트북

  • S3에 담긴 .csv 파일: ①
    • EC2 인스턴스 파이썬 판다스
    • EC2 인스턴스 RStudio 서버로 가져오기
  • S3에 담긴 .parquet 파일: ②
    • EC2 인스턴스 파이썬 판다스
    • EC2 인스턴스 RStudio 서버로 가져오기
  • S3에 담긴 .csv 파일: ③
    • EC2 스파크 클러스터 파이썬 - pyspark
    • EC2 스파크 클러스터 RStudio - sparklyr
  • S3에 담긴 .parquet 파일: ④
    • EC2 스파크 클러스터 파이썬 - pyspark
    • EC2 스파크 클러스터 RStudio - sparklyr

2 ① S3 .csv

2.1 파이썬 판다스

먼저 S3 버킷 .csv 데이터를 파이썬 판다스로 불러오는 사례를 살펴보자. S3 EC2 인스턴스에서 AWS S3 버킷 데이터를 읽어들이기 위해서 쥬피터 노트북으로 접속을 한다. 아나콘다3가 설치된 상태에서 pip install smart_open 팩키지를 설치하고 나서 S3 버킷에 접근 권한이 있는 aws_key, aws_secret 설정값과 함께 버킷명과 파일위치를 지정하여 pd.read_csv() 메쏘드를 통해서 데이터를 판다스 데이터프레임으로 가져온다.

  • s3fs
  • boto 혹은 boto3
  • smart_open

3 ③ S3 버킷 .parquet

3.1 S3 버킷 .parquet → 파이썬 판다스 1

.parquet 파일을 읽어오기 위해서 pyarrow 팩키지를 사용한다. 먼저 판다스 데이터프레임을 생성하고 이를 pyarrow 객체로 변환시킨다.

3.1.1 .parquet 파일 생성

먼저 판다스 데이터프레임을 생성시킨다. pd.DataFrame() 메쏘드를 사용해서 데이터프레임을 생성하고 판다스 데이터프레임을 불러읽어 .parquet 객체를 생성한다.

.parquet 파일로 로컬 컴퓨터에 저장을 시키고 나아가 S3 버킷에 저장을 시킨다. pq.write_table(table, 'example.parquet') 명령어로 앞서 생성한 파케이 객체를 example.parquet 파일로 저장시킨다. 그리고 나서 /home/ubuntu/notebooks 디렉토리 example.parquet 파일이 생성된 것을 확인한다.

3.1.2 .parquet 파일 불러오기

앞서 생성시킨 로컬 EC2 인스턴스에 저장된 .parquet 파일을 불러온다. pq.read_table() 메쏘드를 통해 파케이 파일을 불러온다.

4 ③ S3 .csv 스파크 (psark)

5 ④ S3 .parquet 스크파(spark)