Python 및 Docker를 사용하여 나만의 간단한 데이터 파이프 라인 구축


데이터는 데이터 전문가로서 우리의 작업을 이끌어내는 자산입니다. 적절한 데이터가 없으면 작업을 수행 할 수 없으며 비즈니스는 경쟁 우위를 얻지 못할 것입니다. 따라서 모든 데이터 전문가에게는 적합한 데이터를 보호하는 것이 중요하며 데이터 파이프 라인은이 목적을 위해 설계된 시스템입니다.
데이터 파이프 라인은 데이터를 한 소스에서 다른 소스로 이동시키고 변환하도록 설계된 시스템입니다. 이러한 시스템은 데이터에 의존하는 모든 비즈니스의 전체 인프라의 일부입니다. 데이터는 우리의 데이터가 신뢰할 수 있고 항상 사용할 준비가되어 있음을 보장합니다.
데이터 파이프 라인을 구축하면 복잡하게 들릴 수 있지만 몇 줄의 코드만으로 안정적인 데이터 파이프 라인을 작성하기에 몇 가지 간단한 도구가 충분합니다. 이 기사에서는 Python과 Docker를 사용하여 간단한 데이터 파이프 라인을 구축하는 방법을 모색하여 일상 데이터 작업에 적용 할 수 있습니다.
들어가자.
데이터 파이프 라인 구축
데이터 파이프 라인을 구축하기 전에 추출, 변환 및로드를 나타내는 ETL의 개념을 이해해 봅시다. ETL은 데이터 파이프 라인이 다음 작업을 수행하는 프로세스입니다.
- 다양한 소스에서 데이터를 추출합니다.
- 데이터를 유효한 형식으로 변환하십시오.
- 액세스 가능한 스토리지 위치에 데이터를로드하십시오.
ETL은 데이터 파이프 라인의 표준 패턴 이므로이 구조를 따를 것입니다.
Python 및 Docker를 사용하면 간단한 설정으로 ETL 프로세스 주변의 데이터 파이프 라인을 구축 할 수 있습니다. Python은 데이터 흐름 활동을 조정하는 데 유용한 도구이며 Docker는 컨테이너를 사용하여 데이터 파이프 라인 애플리케이션의 환경을 관리하는 데 유용합니다.
Python 및 Docker로 데이터 파이프 라인을 설정합시다.
1 단계 : 준비
먼저, 우리는 우리 시스템에 Python과 Docker가 설치되어 있음을 결정해야합니다 (여기서는 여기에 포함하지 않을 것입니다).
이 예에서는 Kaggle의 심장 마비 데이터 세트를 데이터 소스로 사용하여 ETL 프로세스를 개발합니다.
모든 것이 제자리에 있으면 프로젝트 구조를 준비 할 것입니다. 전반적으로 간단한 데이터 파이프 라인에는 다음과 같은 골격이 있습니다.
simple-data-pipeline/
├── app/
│ └── pipeline.py
├── data/
│ └── Medicaldataset.csv
├── Dockerfile
├── requirements.txt
└── docker-compose.yml
호출 된 기본 폴더가 있습니다 simple-data-pipeline
포함 :
- an
app
폴더가 포함되어 있습니다pipeline.py
파일. - 에이
data
소스 데이터를 포함하는 폴더 (Medicaldataset.csv
). - 그만큼
requirements.txt
환경 종속성 파일. - 그만큼
Dockerfile
Docker 구성의 경우. - 그만큼
docker-compose.yml
다중 컨테이너 Docker 응용 프로그램을 정의하고 실행하는 파일.
우리는 먼저 작성합니다 requirements.txt
프로젝트에 필요한 라이브러리가 포함 된 파일.
이 경우 다음 라이브러리 만 사용합니다.
다음 섹션에서는 샘플 데이터를 사용하여 데이터 파이프 라인을 설정합니다.
2 단계 : 파이프 라인 설정
우리는 파이썬을 설정할 것입니다 pipeline.py
ETL 프로세스 파일. 이 경우 다음 코드를 사용합니다.
import pandas as pd
import os
input_path = os.path.join("/data", "Medicaldataset.csv")
output_path = os.path.join("/data", "CleanedMedicalData.csv")
def extract_data(path):
df = pd.read_csv(path)
print("Data Extraction completed.")
return df
def transform_data(df):
df_cleaned = df.dropna()
df_cleaned.columns = [col.strip().lower().replace(" ", "_") for col in df_cleaned.columns]
print("Data Transformation completed.")
return df_cleaned
def load_data(df, output_path):
df.to_csv(output_path, index=False)
print("Data Loading completed.")
def run_pipeline():
df_raw = extract_data(input_path)
df_cleaned = transform_data(df_raw)
load_data(df_cleaned, output_path)
print("Data pipeline completed successfully.")
if __name__ == "__main__":
run_pipeline()
파이프 라인은 CSV 파일을로드하고 누락 된 데이터를 삭제하고 열 이름을 청소하는 것과 같은 데이터 변환을 수행하고 정리 된 데이터를 새 CSV 파일에로드하는 ETL 프로세스를 따릅니다. 우리는이 단계를 하나의 단일에 싸었다 run_pipeline
전체 프로세스를 실행하는 함수.
3 단계 : Dockerfile을 설정하십시오
Python 파이프 라인 파일을 준비하면 Dockerfile
다음 코드를 사용하여 Docker 컨테이너의 구성을 설정하려면 다음과 같습니다.
FROM python:3.10-slim
WORKDIR /app
COPY ./app /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "pipeline.py"]
위의 코드에서는 컨테이너가 Python 버전 3.10을 환경으로 사용하도록 지정합니다. 다음으로 컨테이너 작업 디렉토리를 설정했습니다 /app
그리고 우리 지역에서 모든 것을 복사하십시오 app
컨테이너에 폴더 app
예배 규칙서. 우리는 또한 복사합니다 requirements.txt
컨테이너 내에서 PIP 설치를 파일하고 실행하십시오. 마지막으로 컨테이너가 시작될 때 Python 스크립트를 실행하도록 명령을 지정합니다.
함께 Dockerfile
준비, 우리는 준비 할 것입니다 docker-compose.yml
전체 실행을 관리하기위한 파일 :
version: '3.9'
services:
data-pipeline:
build: .
container_name: simple_pipeline_container
volumes:
- ./data:/data
위의 Yaml 파일은 실행될 때 사용 가능한 것을 사용하여 현재 디렉토리에서 Docker 이미지를 빌드합니다. Dockerfile
. 우리는 또한 지역을 장착합니다 data
폴더 data
컨테이너 내의 폴더는 스크립트에 데이터 세트에 액세스 할 수 있도록합니다.
파이프 라인 실행
모든 파일을 준비하면 Docker에서 데이터 파이프 라인을 실행합니다. 프로젝트 루트 폴더로 이동하여 명령 프롬프트에서 다음 명령을 실행하여 Docker 이미지를 빌드하고 파이프 라인을 실행하십시오.
docker compose up --build
이것을 성공적으로 실행하면 다음과 같은 정보 로그가 표시됩니다.
✔ data-pipeline Built 0.0s
✔ Network simple_docker_pipeline_default Created 0.4s
✔ Container simple_pipeline_container Created 0.4s
Attaching to simple_pipeline_container
simple_pipeline_container | Data Extraction completed.
simple_pipeline_container | Data Transformation completed.
simple_pipeline_container | Data Loading completed.
simple_pipeline_container | Data pipeline completed successfully.
simple_pipeline_container exited with code 0
모든 것이 성공적으로 실행되면 새로운 것을 볼 수 있습니다. CleanedMedicalData.csv
데이터 폴더에 파일을 파일하십시오.
축하해요! Python과 Docker가있는 간단한 데이터 파이프 라인을 만들었습니다. 보다 복잡한 파이프 라인을 처리 할 수 있는지 다양한 데이터 소스 및 ETL 프로세스를 사용해보십시오.
결론
데이터 파이프 라인을 이해하는 것은 모든 데이터 전문가에게 중요합니다. 작업에 대한 올바른 데이터를 수집하는 데 필수적이므로. 이 기사에서는 Python 및 Docker를 사용하여 간단한 데이터 파이프 라인을 구축하는 방법을 살펴보고이를 실행하는 방법을 배웠습니다.
이것이 도움이 되었기를 바랍니다!
Cornellius Yudha Wijaya 데이터 과학 보조 관리자 및 데이터 작성자입니다. 그는 Allianz Indonesia에서 풀 타임으로 일하는 동안 소셜 미디어 및 작문 미디어를 통해 Python과 데이터 팁을 공유하는 것을 좋아합니다. Cornellius는 다양한 AI 및 기계 학습 주제에 대해 글을 씁니다.
Post Comment