빠른 시작: Python 사용

이 페이지에서는 Python 개발 환경을 설정하고, Python용 Apache Beam SDK를 가져오고, 예시 파이프라인을 실행 및 수정하는 방법을 설명합니다.

시작하기 전에

  1. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Google Cloud Platform 프로젝트를 선택하거나 만듭니다.

    리소스 관리 페이지로 이동

  3. Google Cloud Platform 프로젝트에 결제가 사용 설정되어 있는지 확인하세요.

    결제 사용 설정 방법 알아보기

  4. Cloud Dataflow, Compute Engine, Stackdriver Logging, Google Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs를 사용 설정합니다.

    APIs 사용 설정

  5. 인증 설정:
    1. GCP Console에서 서비스 계정 키 만들기 페이지로 이동합니다.

      서비스 계정 키 만들기 페이지로 이동
    2. 서비스 계정 목록에서 새 서비스 계정을 선택합니다.
    3. 서비스 계정 이름 필드에 이름을 입력합니다.
    4. 역할 목록에서 프로젝트 > 소유자를 선택합니다.

      참고: 역할 필드가 리소스에 액세스할 수 있도록 서비스 계정을 승인합니다. 나중에 GCP Console을 사용하여 이 필드를 보고 변경할 수 있습니다. 프로덕션 애플리케이션을 개발하는 경우 프로젝트 > 소유자보다 세부적인 권한을 지정합니다. 자세한 내용은 서비스 계정에 역할 부여를 참조하세요.
    5. 만들기를 클릭합니다. 키가 포함된 JSON 파일이 컴퓨터에 다운로드됩니다.
  6. 환경 변수 GOOGLE_APPLICATION_CREDENTIALS를 서비스 계정 키가 포함된 JSON 파일의 파일 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로, 새 세션을 열 경우, 변수를 다시 설정합니다.

  7. Cloud Storage 버킷을 만듭니다.
    1. GCP Console에서 Cloud Storage 브라우저로 이동합니다.

      Cloud Storage 브라우저로 이동

    2. 버킷 만들기를 클릭합니다.
    3. 버킷 만들기 대화상자에서 다음 속성을 지정합니다.
      • 이름: 고유한 버킷 이름. 버킷 네임스페이스는 전역적이며 전체 공개로 표시되기 때문에 버킷 이름에 민감한 정보를 포함하면 안 됩니다.
      • 저장소 등급: 다중 지역
      • 버킷 데이터가 저장되는 위치
    4. 만들기를 클릭합니다.

환경 설정

    이 빠른 시작에서는 명령어 프롬프트를 사용합니다. 명령어 프롬프트를 사용할 수 없으면 Cloud Shell을 사용해도 됩니다. Python 패키지 관리자가 이미 설치되어 있으므로 1단계는 건너뛰어도 됩니다.

  1. Python용 Apache Beam SDK를 사용하려면 Python 버전 2.7.x(pip 포함)가 설치되어 있어야 합니다. 다음 명령어를 실행하여 Python 2.7.x 및 pip가 설치되어 있는지 확인합니다.
    python2.7 --version
    python2.7 -m pip --version
    Python이 없으면 Python 설치 페이지에서 사용 중인 운영체제에 맞는 설치 단계를 확인합니다.
  2. Cython은 필수는 아니지만 설치되어 있는 경우 버전 0.28.1 이상이어야 합니다. Cython 버전을 확인하려면 pip show cython을 실행합니다.

  3. 초기 실험을 위해 Python 가상 환경을 설치합니다. virtualenv 버전이 13.1.0 이상이 아닌 경우, virtualenv 도구 설치 및 사용에서 사용 중인 운영체제에 맞는 설치 단계를 확인합니다.

    다음 명령어를 실행하여 새 가상 환경을 설정 및 활성화합니다.

    python2.7 -m virtualenv env
    source env/bin/activate
    이 빠른 시작에서는 가상 환경을 사용합니다. 빠른 시작을 마친 후에는 deactivate를 실행하여 가상 환경을 중지할 수 있습니다.
Google Cloud Platform에서 Python 사용에 대한 자세한 내용은 Python 개발 환경 설정 페이지를 참조하세요.

참고: Python 3를 사용하여 이 빠른 시작을 실행할 수 있습니다. Python 3용 Apache Beam SDK 사용 지원은 출시 전 상태(알파)이며 변경되거나 제한될 수 있습니다.

Apache Beam SDK 가져오기

Apache Beam SDK는 데이터 파이프라인용 오픈소스 프로그래밍 모델입니다. 이 파이프라인을 Apache Beam 프로그램으로 정의하고 Cloud Dataflow와 같은 실행기를 선택하여 파이프라인을 실행할 수 있습니다.

가상 환경에서 다음 명령어를 실행하여 Python용 Apache Beam SDK의 최신 버전을 설치합니다.

pip install apache-beam[gcp]

WordCount를 로컬에서 실행

WordCount 예는 다음 단계를 수행하는 파이프라인을 보여줍니다.
  1. 텍스트 파일을 입력으로 가져옵니다.
  2. 각 줄을 단어로 파싱합니다.
  3. 토큰화된 단어에서 빈도 카운트를 수행합니다.

로컬 머신에서 다음 명령어를 사용하여 apache_beam 패키지의 wordcount 모듈을 실행합니다.

python -m apache_beam.examples.wordcount \
  --output outputs
이 텍스트 파일은 리소스 이름 gs://dataflow-samples/shakespeare/kinglear.txt로 Cloud Storage 버킷에 저장됩니다. 출력을 확인하려면 다음 명령어를 실행합니다.
more outputs*

종료하려면 q 키를 누릅니다.

파이프라인을 로컬에서 실행하면 Apache Beam 프로그램을 테스트하고 디버깅할 수 있습니다. Apache Beam GitHub에서 wordcount.py 소스 코드를 확인할 수 있습니다.

Cloud Dataflow 서비스에서 WordCount 실행

runner 필드에 DataflowRunner를 지정하여 Cloud Dataflow 서비스에서 apache_beam 패키지의 wordcount 모듈을 실행할 수 있습니다.

먼저 PROJECT 변수와 GCS_BUCKET 변수를 정의합니다.

PROJECT=PROJECT_ID
BUCKET=GCS_BUCKET
다음 명령어를 실행하여 파이프라인을 실행합니다.
python -m apache_beam.examples.wordcount \
  --input gs://dataflow-samples/shakespeare/kinglear.txt \
  --output gs://$BUCKET/wordcount/outputs \
  --runner DataflowRunner \
  --project $PROJECT \
  --temp_location gs://$BUCKET/tmp/

GCP를 사용하여 결과 보기

Cloud Dataflow를 사용하여 파이프라인을 실행하면 결과가 Cloud Storage 버킷에 저장됩니다.

gsutil 도구를 사용하면 터미널에서 결과를 확인할 수 있습니다.

다음 명령어를 실행하여 출력 파일을 나열합니다.

gsutil ls -lh "gs://$BUCKET/wordcount/outputs*"  
다음 명령어를 실행하여 이러한 파일의 결과를 확인합니다.
gsutil cat "gs://$BUCKET/wordcount/outputs*"

모니터링 UI에서 결과를 확인하려면 다음 안내를 따르세요.
  1. Cloud Dataflow 모니터링 UI를 엽니다.
    Cloud Dataflow 웹 UI로 이동

    초기 상태실행 중wordcount 작업이 나타난 후 성공으로 상태가 바뀝니다.

    성공 상태의 Cloud Dataflow WordCount 작업
  2. Google Cloud Platform 콘솔에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저로 이동

    wordcount 디렉터리에서 작업을 통해 만든 출력 파일이 표시됩니다.

    결과 디렉터리(WordCount 작업의 출력 파일 포함)

파이프라인 코드 수정

이전 예의 WordCount 파이프라인은 대소문자를 구분합니다. 다음 둘러보기에서는 WordCount 파이프라인이 대소문자를 구분하지 않도록 파이프라인을 수정하는 방법을 보여줍니다.
  1. Apache Beam GitHub 저장소에서 WordCount 코드의 최신 사본을 다운로드합니다.
  2. 로컬 머신에서 파이프라인을 실행합니다.
    python wordcount.py --output outputs
  3. 다음 명령어를 실행하여 결과를 확인합니다.
    more outputs*
    종료하려면 q 키를 누릅니다.
  4. 원하는 편집기에서 wordcount.py 파일을 엽니다.
  5. run 함수에서 파이프라인 단계를 검사합니다. split하면 줄이 문자열 단어로 분리됩니다.
    counts = (lines
              | 'split' >> (beam.ParDo(WordExtractingDoFn())
                            .with_output_types(unicode))
              | 'pair_with_one' >> beam.Map(lambda x: (x, 1))
              | 'group' >> beam.GroupByKey()
              | 'count' >> beam.Map(count_ones))
  6. split 후 줄을 수정하여 문자열을 소문자로 변경합니다.
    counts = (lines
              | 'split' >> (beam.ParDo(WordExtractingDoFn())
                            .with_output_types(unicode))
              | 'lowercase' >> beam.Map(unicode.lower)     # Add this line to modify the pipeline
              | 'pair_with_one' >> beam.Map(lambda x: (x, 1))
              | 'group' >> beam.GroupByKey()
              | 'count' >> beam.Map(count_ones)) 
    이렇게 수정하면 str.lower 함수가 모든 단어에 매핑됩니다. 이 줄은 beam.Map(lambda word: str.lower(word))과 동일합니다.
  7. 파일을 저장하고 수정된 WordCount 작업을 로컬 머신에서 실행합니다.
    python wordcount.py --output outputs
  8. 다음 명령어를 실행하여 수정된 파이프라인의 결과를 확인합니다.
    more outputs*
    종료하려면 q 키를 누릅니다.

삭제

이 빠른 시작에서 사용한 리소스 비용이 GCP 계정에 청구되지 않도록 다음을 수행합니다.

  1. GCP Console에서 Cloud Storage 브라우저로 이동합니다.

    Cloud Storage 브라우저로 이동

  2. 삭제할 버킷 옆의 체크박스를 클릭합니다.
  3. 페이지 상단의 삭제 버튼을 클릭하여 버킷을 삭제합니다.

다음 단계

Apache Beam™은 미국 및/또는 다른 국가에서 사용되는 Apache Software Foundation 또는 해당 계열사의 상표입니다.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.