자습서: Azure Batch를 사용하여 Azure Data Factory를 통해 Python 스크립트 실행

이 자습서에서는 다음을 수행하는 방법을 알아봅니다.

  • Batch 및 Storage 계정 인증
  • Python에서 스크립트 개발 및 실행
  • 컴퓨팅 노드 풀을 만들어 애플리케이션 실행
  • Python 워크로드 예약
  • 분석 파이프라인 모니터링
  • 로그 파일에 액세스

아래 예제에서는 Blob 스토리지 컨테이너에서 CSV 입력을 받고, 데이터 조작 프로세스를 수행하며, 출력을 별도의 Blob 스토리지 컨테이너에 쓰는 Python 스크립트를 실행합니다.

Azure 구독이 아직 없는 경우 시작하기 전에 무료 계정을 만듭니다.

사전 요구 사항

Azure에 로그인

https://portal.azure.com 에서 Azure Portal에 로그인합니다.

계정 자격 증명 가져오기

이 예제에서는 배치 계정과 스토리지 계정에 대한 자격 증명을 제공해야 합니다. 필요한 자격 증명을 가져오는 간단한 방법은 Azure Portal에 있습니다. (Azure API 또는 명령줄 도구를 사용하여 이러한 자격 증명을 가져올 수도 있습니다.)

  1. 모든 서비스>배치 계정을 차례로 선택한 다음, 배치 계정의 이름을 선택합니다.

  2. Batch 자격 증명을 보려면 를 선택합니다. 배치 계정, URL기본 액세스 키의 값을 텍스트 편집기에 복사합니다.

  3. 스토리지 계정 이름 및 키를 보려면 스토리지 계정을 선택합니다. 스토리지 계정 이름Key1의 값을 텍스트 편집기에 복사합니다.

Batch Explorer를 사용하여 Batch 풀 만들기

이 섹션에서는 Batch Explorer를 사용하여 Azure Data factory 파이프라인에서 사용할 Batch 풀을 만듭니다.

  1. Azure 자격 증명을 사용하여 Batch Explorer에 로그인합니다.
  2. Batch 계정 선택
  3. 왼쪽 메뉴 모음에서 을 선택한 다음, 검색 양식 위의 추가 버튼을 선택하여 풀을 만듭니다.
    1. ID와 표시 이름을 선택합니다. 이 예제에서는 custom-activity-pool을 사용합니다.
    2. 크기 조정 유형을 고정 크기로 설정하고 전용 노드 수를 2로 설정합니다.
    3. 이미지 유형에서 운영 체제로 Marketplace를 선택하고 Microsoft-dsvm으로 게시자를 선택합니다.
    4. 가상 머신 크기에 Standard_f2s_v2를 선택합니다.
    5. 시작 작업을 사용하도록 설정하고 cmd /c "pip install azure-storage-blob pandas" 명령을 추가합니다. 사용자 ID는 기본 풀 사용자로 유지할 수 있습니다.
    6. 확인을 선택합니다.

Blob 컨테이너 만들기

여기에서는 OCR Batch 작업에 대한 입력 및 출력 파일을 저장하는 Blob 컨테이너를 만듭니다.

  1. Azure 자격 증명을 사용하여 Storage Explorer에 로그인합니다.
  2. Batch 계정에 연결된 스토리지 계정을 사용하여 Blob 컨테이너 만들기의 단계에 따라 두 개의 Blob 컨테이너(입력 파일용 1개, 출력 파일용 1개)를 만듭니다.
    • 이 예제에서는 입력 컨테이너 input과 출력 컨테이너 output을 호출합니다.
  3. Blob 컨테이너의 Blob 관리의 단계에 따라 Storage Explorer를 사용하여 iris.csv를 입력 컨테이너 input에 업로드합니다.

Python에서 스크립트 개발

다음 Python 스크립트는 input 컨테이너에서 iris.csv 데이터 세트를 로드하고, 데이터 조작 프로세스를 수행하며, 결과를 output 컨테이너에 다시 저장합니다.

# Load libraries
from azure.storage.blob import BlobClient
import pandas as pd

# Define parameters
connectionString = "<storage-account-connection-string>"
containerName = "output"
outputBlobName	= "iris_setosa.csv"

# Establish connection with the blob storage account
blob = BlobClient.from_connection_string(conn_str=connectionString, container_name=containerName, blob_name=outputBlobName)

# Load iris dataset from the task node
df = pd.read_csv("iris.csv")

# Take a subset of the records
df = df[df['Species'] == "setosa"]

# Save the subset of the iris dataframe locally in task node
df.to_csv(outputBlobName, index = False)

with open(outputBlobName, "rb") as data:
    blob.upload_blob(data)

스크립트를 main.py로 저장하고 Azure Storageinput 컨테이너에 업로드합니다. Blob 컨테이너에 업로드하기 전에 해당 기능을 로컬로 테스트하고 확인해야 합니다.

python main.py

Azure Data Factory 파이프라인 설정

이 섹션에서는 Python 스크립트를 사용하여 파이프라인을 만들고 유효성을 검사합니다.

  1. 이 문서의 "데이터 팩터리 만들기" 섹션에서 설명하는 데이터 팩터리를 만드는 단계를 수행합니다.

  2. 팩터리 리소스 상자에서 더하기(+) 단추, 파이프라인을 차례로 선택합니다.

  3. 일반 탭에서 파이프라인 이름을 "Python 실행"으로 설정합니다.

    일반 탭에서 파이프라인 이름을

  4. 활동 상자에서 Batch 서비스를 펼칩니다. 사용자 지정 활동을 활동 도구 상자에서 파이프라인 디자이너 화면으로 끌어서 놓습니다. 사용자 지정 작업에 대해 다음 탭을 작성합니다.

    1. 일반 탭에서 이름에 대해 testPipeline을 지정하고 일반 탭에서 이름에 testPipeline을 지정합니다.

    2. Azure Batch 탭에서 이전 단계에서 만든 Batch 계정연결 테스트를 추가하여 성공적으로 연결되었는지 확인합니다. Azure Batch 탭에서 이전 단계에서 만든 Batch 계정을 추가한 다음 연결을 테스트합니다.

    3. 설정 탭에서 다음을 수행합니다.

      1. 명령python main.py로 설정합니다.
      2. 리소스 연결된 서비스에 대해 이전 단계에서 만든 스토리지 계정을 추가합니다. 연결을 테스트하여 성공적으로 연결되었는지 확인합니다.
      3. 폴더 경로에서 Python 스크립트와 관련 입력이 포함된 Azure Blob Storage 컨테이너의 이름을 선택합니다. 그러면 Python 스크립트를 실행하기 전에 선택한 파일이 컨테이너에서 풀 노드 인스턴스로 다운로드됩니다.

      폴더 경로에서 Azure Blob 스토리지 컨테이너의 이름을 선택합니다.

  5. 캔버스 위에 있는 파이프라인 도구 모음에서 유효성 검사를 클릭하여 파이프라인 설정의 유효성을 검사합니다. 파이프라인에 대한 유효성이 성공적으로 검사되었는지 확인합니다. 유효성 검사 출력을 닫으려면 >>(오른쪽 화살표) 단추를 선택합니다.

  6. 디버그를 클릭하여 파이프라인을 테스트하고 파이프라인이 정확하게 작동하는지 확인합니다.

  7. 게시를 클릭하여 파이프라인을 게시합니다.

  8. 트리거를 클릭하여 Python 스크립트를 일괄 처리 프로세스의 일부로 실행합니다.

    트리거를 클릭하여 Python 스크립트를 일괄 처리 프로세스의 일부로 실행합니다.

로그 파일 모니터링

스크립트 실행에서 경고 또는 오류를 생성하는 경우 기록된 출력에 대한 자세한 내용은 stdout.txt 또는 stderr.txt에서 확인할 수 있습니다.

  1. Batch Explorer의 왼쪽에서 작업을 선택합니다.
  2. 데이터 팩터리에서 만든 작업을 선택합니다. 풀 이름을 custom-activity-pool이라고 가정하고 adfv2-custom-activity-pool을 선택합니다.
  3. 오류 종료 코드가 있는 작업을 클릭합니다.
  4. stdout.txtstderr.txt를 확인하여 문제를 조사하고 진단합니다.

리소스 정리

작업 및 태스크 자체에 대한 요금이 부과되지 않지만 컴퓨팅 노드에 대한 요금이 청구됩니다. 따라서 풀을 필요할 때만 할당하는 것이 좋습니다. 풀을 삭제하면 노드의 모든 태스크 출력이 삭제됩니다. 그러나 입력 및 출력 파일은 스토리지 계정에 남아 있습니다. 더 이상 필요하지 않은 경우 Batch 계정과 스토리지 계정을 삭제할 수도 있습니다.

다음 단계

이 자습서에서는 다음 작업 방법을 알아보았습니다.

  • Batch 및 Storage 계정 인증
  • Python에서 스크립트 개발 및 실행
  • 컴퓨팅 노드 풀을 만들어 애플리케이션 실행
  • Python 워크로드 예약
  • 분석 파이프라인 모니터링
  • 로그 파일에 액세스

Azure Data Factory에 대해 자세히 알아보려면 다음을 참조하세요.