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 소스에서 데이터를 더 자주 수집해야 하는 경우에 적합
- 스트리밍 데이터 수집을 수행하는 경로이기도 함
- SQL을 사용한 전체 또는 증분 추출
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가 잘 설정되어 있지 않았을 때 나는 에러라 한다.