Dataflow 명령줄 인터페이스 사용

Dataflow 관리형 서비스를 사용하여 파이프라인을 실행하는 경우 Dataflow 명령줄 인터페이스를 사용하여 Dataflow 작업에 대한 정보를 가져올 수 있습니다. Dataflow 명령줄 인터페이스는 Cloud SDK의 명령줄 도구에 속합니다.

Cloud Console을 사용하여 Dataflow 작업을 보고 상호작용하려면 Dataflow 모니터링 인터페이스를 사용합니다.

Dataflow 명령줄 구성요소 설치

로컬 터미널에서 Dataflow 명령줄 인터페이스를 사용하려면 Cloud SDK를 설치하고 구성합니다.

Cloud Shell의 경우 Dataflow 명령줄 인터페이스는 자동으로 사용 가능합니다.

명령어 실행

사용 가능한 명령어를 실행하여 Dataflow 명령줄 인터페이스와 상호작용합니다. 사용 가능한 Dataflow 명령어 목록을 보려면 셸 또는 터미널에 다음 명령어를 입력합니다.

  gcloud dataflow --help

출력에서 볼 수 있듯이 Dataflow 명령어에는 flex-template, jobs, sql 등 그룹 3개가 있습니다.

Flex 템플릿 명령어

flex-template 하위 명령어 그룹을 사용 설정하면 Dataflow Flex 템플릿으로 작업할 수 있습니다. 지원되는 작업은 다음과 같습니다.

  • build: 지정된 매개변수에서 Flex 템플릿 파일을 빌드합니다.
  • run: 지정된 경로에서 작업을 실행합니다.

템플릿을 실행하려면 Cloud Storage 버킷에 저장되는 템플릿 사양 파일을 만들어야 합니다. 템플릿 사양 파일에는 SDK 정보 및 메타데이터와 같이 작업을 실행하는 데 필요한 모든 정보가 포함됩니다. 또한 metadata.json 파일에는 이름, 설명, 입력 매개변수와 같은 템플릿에 대한 정보가 포함됩니다. 템플릿 사양 파일을 만든 후 자바 또는 Python 중 하나를 사용하여 Flex 템플릿을 빌드할 수 있습니다.

gcloud command-line tool을 사용하여 Flex 템플릿을 만들고 실행하려면 Flex 템플릿 사용의 가이드를 참조하세요.

Jobs 명령어

jobs 하위 명령어 그룹을 사용하면 프로젝트에서 Dataflow 작업을 수행할 수 있습니다. 지원되는 작업은 다음과 같습니다.

  • cancel: 명령줄 인수와 일치하는 모든 작업을 취소합니다.
  • describe: Get API에서 가져온 작업 객체를 출력합니다.
  • drain: 명령줄 인수와 일치하는 모든 작업을 드레이닝합니다.
  • list: 특정 프로젝트의 모든 작업을 나열하며 선택적으로 리전별로 필터링됩니다.
  • run: 지정된 경로에서 작업을 실행합니다.
  • show: 지정된 작업에 대한 간단한 설명을 표시합니다.

프로젝트의 모든 Dataflow 작업 목록을 가져오려면 셸 또는 터미널에서 다음 명령어를 실행합니다.

gcloud dataflow jobs list

이 명령어는 현재 작업 목록을 반환합니다. 다음은 샘플 출력입니다.

  ID                                        NAME                                    TYPE   CREATION_TIME        STATE   REGION
  2015-06-03_16_39_22-4020553808241078833   wordcount-janedoe-0603233849            Batch  2015-06-03 16:39:22  Done    us-central1
  2015-06-03_16_38_28-4363652261786938862   wordcount-johndoe-0603233820            Batch  2015-06-03 16:38:28  Done    us-central1
  2015-05-21_16_24_11-17823098268333533078  bigquerytornadoes-johndoe-0521232402    Batch  2015-05-21 16:24:11  Done    europe-west1
  2015-05-21_13_38_06-16409850040969261121  bigquerytornadoes-johndoe-0521203801    Batch  2015-05-21 13:38:06  Done    us-central1
  2015-05-21_13_17_18-18349574013243942260  bigquerytornadoes-johndoe-0521201710    Batch  2015-05-21 13:17:18  Done    europe-west1
  2015-05-21_12_49_37-9791290545307959963   wordcount-johndoe-0521194928            Batch  2015-05-21 12:49:37  Done    us-central1
  2015-05-20_15_54_51-15905022415025455887  wordcount-johndoe-0520225444            Batch  2015-05-20 15:54:51  Failed  us-central1
  2015-05-20_15_47_02-14774624590029708464  wordcount-johndoe-0520224637            Batch  2015-05-20 15:47:02  Done    us-central1

각 작업에 대해 표시되는 작업 ID를 사용하여 describe 명령어를 실행하여 작업에 대한 추가 정보를 표시할 수 있습니다.

gcloud dataflow jobs describe JOB_ID

JOB_ID를 프로젝트의 Dataflow 작업 중 하나의 작업 ID로 바꿉니다.

예를 들어 작업 ID 2015-02-09_11_39_40-15635991037808002875의 명령어를 실행하는 경우 샘플 출력은 다음과 같습니다.

createTime: '2015-02-09T19:39:41.140Z'
currentState: JOB_STATE_DONE
currentStateTime: '2015-02-09T19:56:39.510Z'
id: 2015-02-09_11_39_40-15635991037808002875
name: tfidf-bchambers-0209193926
projectId: google.com:clouddfe
type: JOB_TYPE_BATCH

결과를 JSON 형식으로 지정하려면 --format=json 옵션을 사용하여 명령어를 실행합니다.

gcloud --format=json dataflow jobs describe JOB_ID

JOB_ID를 프로젝트의 Dataflow 작업 중 하나의 작업 ID로 바꿉니다.

다음 샘플 출력은 JSON으로 형식 지정됩니다.

{
  "createTime": "2015-02-09T19:39:41.140Z",
  "currentState": "JOB_STATE_DONE",
  "currentStateTime": "2015-02-09T19:56:39.510Z",
  "id": "2015-02-09_11_39_40-15635991037808002875",
  "name": "tfidf-bchambers-0209193926",
  "projectId": "google.com:clouddfe",
  "type": "JOB_TYPE_BATCH"
}

SQL 명령어

sql 하위 명령어 그룹을 사용 설정하면 Dataflow SQL로 작업할 수 있습니다. gcloud Dataflow sql query 명령어는 Dataflow에서 사용자 지정 SQL 쿼리를 수락하고 실행합니다.

예를 들어 BigQuery 데이터 세트에서 읽고 다른 BigQuery 데이터 세트에 쓰는 Dataflow 작업에서 간단한 SQL 쿼리를 실행하려면 셸 또는 터미널에서 다음을 실행합니다.

gcloud dataflow sql query 'SELECT word FROM
bigquery.table.PROJECT_ID.input_dataset.input_table
where count > 3'
    --job-name=JOB_NAME \
    --region=us-west1 \
    --bigquery-dataset=OUTPUT_DATASET \
    --bigquery-table=OUTPUT_TABLE

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 전역적으로 고유한 이름
  • JOB_NAME: Dataflow 작업 이름
  • OUTPUT_DATASET: 출력 데이터 세트의 이름
  • OUTPUT_TABLE: 출력 테이블 이름

Dataflow SQL 작업을 시작하는 데 몇 분 정도 걸릴 수 있습니다. 작업을 만든 후에는 업데이트할 수 없습니다. Dataflow SQL 작업은 자동 확장을 사용하며 Dataflow가 자동으로 실행 모드를 일괄 또는 스트리밍으로 선택합니다. Dataflow SQL 작업의 경우 이 동작을 제어할 수 없습니다. Dataflow SQL 작업을 중지하려면 cancel 명령어를 사용합니다. drain을 사용하여 Dataflow SQL 작업을 중지할 수 없습니다.

Dataflow에서 SQL 명령어를 사용하는 방법에 대한 자세한 내용은 Dataflow SQL 참조gcloud Dataflow sql query 문서를 참조하세요.

리전 엔드포인트가 지정된 명령어 사용

Dataflow 명령줄 인터페이스는 gcloud 도구 버전 176 이후 리전 엔드포인트를 지원합니다. 모든 명령어에 --region 옵션을 사용하여 작업을 관리하는 리전 엔드포인트를 지정하십시오.

예를 들어 gcloud dataflow jobs list는 모든 리전의 작업을 나열하지만 gcloud dataflow jobs list --region=europe-west1europe-west1에서 관리되는 작업만 나열합니다.