Data Enginerring/데이터 파이프라인 핵심 가이드

04 데이터 수집 : 데이터 추출 (1)

dashwood 2022. 6. 30. 00:32

04 데이터 수집 : 데이터 추출

파이썬 환경 설정

# env 가상환경 생성
python -m venv env

# 가상환경 활성화
source env/bin/activate

# configparser 설치
pip3 install configparser

# pipeline.conf 파일 생성
touch pipeline.conf

 

 

클라우드 파일 스토리지 설정

  • 버킷을 만들 때는 비공개로 유지하는 등의 기본 설정을 사용하는 것이 좋음
  • 추출 예제에서는 지정된 소스 시스템에서 데이터를 추출하고 출력을 S3 버킷에 저장함
# 파이썬용 AWS SDK 설치
pip install boto3

 

AWS IAM 사용자 생성하기

IAM을 사용하여 리소스를 사용하도록 인증 및 권한 부여해야한다..!

SAA 공부할 때 나오던 데 이거였군.. 조만간 자세히 보도록 해야지

책과 같은 사용자 이름 설정

자격 증명 유형은 액세스 키 - 프로그래밍 방식 액세스

 

기존 정책 직접 연결 선택 후 AmazonS3FullAccess 정책 선택

 

이건 그냥 넘어가기

 

설정 사항들 확인하고!

저기 .csv 다운로드하기

비밀 액세스키도 저장해야함

 

pipeline.conf 설정해주기!

 

MySQL 데이터베이스에서 데이터 추출

  • MySQL 데이터베이스에서 데이터 추출 방법
    • SQL을 사용한 전체 또는 증분 추출
      • 구현이 간단하지만 자주 변경되는 대규모 데이터셋에서는 확장성이 떨어짐
      • 전체 추출과 증분 추출 사이에도 트레이드 오프가 있음
    • 이진 로그(binlog) 복제
      • 구현 복잡하지만 원본 테이블의 변경되는 데이터 볼륨이 크거나 MySQL 소스에서 데이터를 더 자주 수집해야 하는 경우에 적합
      • 스트리밍 데이터 수집을 수행하는 경로이기도 함

 

homebrew로 mysql 설치완.

 

Sequel Pro도 설치를 해줬다.

 

예제의 쿼리문 실행

 

전체 또는 증분 MySQL 테이블 추출

  • 전체 추출
    • 추출 작업을 실행할 때마다 테이블의 모든 레코드가 추출됨
    • 로드단계에서 목적지에 있는 대상 테이블을 먼저 삭제하고 새로 추출된 데이터를 대상 데이터에 로드
  • 증분 추출
    • 추출 작업의 마지막 실행 이후 변경되거나 추가된 원본 테이블의 레코드만 추출
    • 로드단계에서 결과 데이터가 목적지의 대상 테이블 데이터에 추가됨
  • 증분 추출이 이상적이지만 단점이 있음
    • 삭제된 행은 캡처되지 않음. 원본 MySQL 테이블의 행이 삭제되면 알 수 없으며 해당 레코드는 대상 테이블에서는 아무것도 변경되지 않은 것 처럼 남아있게 됨.
    • 원본 테이블에는 마지막으로 업데이트된 시간에 대한 신뢰할 수 있는 타임스탬프가 있어야 함

 

예제 코드를 실행하기 위해 S3 버킷을 생성하였다

psycopg2 라이브러리를 설치하는데 

이러한 에러가 나길래

brew install postgresql

export LDFLAGS="-L/usr/local/opt/openssl/lib"

export CPPFLAGS="-I/usr/local/opt/openssl/include"

pip install psycopg2

차례대로 실행하니 잘 설치된다! 필요한 path가 잘 설정되어 있지 않았을 때 나는 에러라 한다.