커스텀 Spark 및 Spark SQL 태스크 예약

Dataplex는 일회성 실행, 정규 일정 또는 주문형으로 커스텀 코드 실행 예약을 지원합니다. 주문형은 미리보기 상태이며 API를 통해서만 제공됩니다. Spark(자바), PySpark(Spark 버전 3.2로 제한됨) 또는 Spark SQL을 사용하여 고객 데이터 변환을 예약할 수 있습니다. Dataplex는 서버리스 Spark 처리 및 기본 제공 서버리스 스케줄러를 사용하여 코드를 실행합니다.

용어

태스크
Dataplex 태스크는 Dataplex가 일정에 대해 수행할 작업을 나타냅니다. 코드, 매개변수, 일정을 캡슐화합니다.
작업

작업은 Dataplex 태스크의 단일 실행을 나타냅니다. 예를 들어 태스크가 매일 실행되도록 예약된 경우 Dataplex는 매일 작업을 만듭니다.

2023년 5월 10일 이후에 생성된 작업의 경우 트리거 필드에 작업의 실행 트리거 유형이 표시됩니다.

다음은 작업 실행 트리거 유형입니다.

  • RUN_REQUEST: RunTask API 호출로 인해 작업이 실행되었음을 나타냅니다.

  • TASK_CONFIG: 태스크의 TriggerSpec 구성으로 인해 작업이 실행되었음을 나타냅니다.

예약 모드

Dataplex는 다음 예약 모드를 지원합니다.

한 번 실행
태스크를 한 번만 실행하려면 이 모드를 사용하세요. 즉시 또는 이후 설정된 시간에 실행하도록 선택할 수 있습니다. 태스크를 즉시 실행하는 경우에도 실행이 시작되는 데 최대 2분이 걸릴 수 있습니다.
일정에 따라 실행
반복적으로 태스크를 실행하려면 이 모드를 사용하세요. 지원되는 반복은 매일, 매주, 매월 또는 커스텀입니다.
주문형 실행

이전에 만든 태스크를 주문형으로 실행하려면 이 모드를 사용하세요. 주문형 실행 모드는 RunTask API에서만 지원됩니다. 작업이 주문형으로 실행되면 Dataplex가 기존 매개변수를 사용하여 작업을 만듭니다. 작업을 실행할 ExecutionSpec 인수 및 라벨을 지정할 수 있습니다.

시작하기 전에

  1. Dataproc API를 사용 설정합니다.

    Dataproc API 사용 설정

  2. 네트워크 또는 서브네트워크에서 비공개 Google 액세스를 사용 설정합니다. Dataplex 태스크에 사용하는 네트워크에서 비공개 Google 액세스를 사용 설정합니다. Dataplex 태스크를 만들 때 네트워크 또는 서브네트워크를 지정하지 않은 경우에는 Dataplex에서 기본 서브네트워크를 사용하며 기본 서브네트워크에 대해 비공개 Google 액세스를 사용 설정해야 합니다.

  3. 서비스 계정을 만듭니다. Dataplex 태스크를 예약하려면 서비스 계정이 필요합니다. 서비스 계정은 태스크를 실행하는 프로젝트에 속해야 합니다. 이 서비스 계정에는 다음 권한이 있어야 합니다.

    • 처리 중인 BigQuery 및 Cloud Storage 데이터에 대한 액세스 권한

    • 태스크를 실행하는 프로젝트에 대한 Dataproc 작업자 역할 권한

    • 태스크가 레이크에 연결된 Dataproc Metastore 인스턴스를 읽거나 업데이트해야 하는 경우 서비스 계정에 Dataproc Metastore 뷰어 또는 편집자 역할이 필요합니다. 이 역할은 Dataplex 레이크가 설정된 프로젝트에서 부여되어야 합니다.

    • 태스크가 Spark SQL 작업인 경우 서비스 계정에 Dataplex 개발자 역할을 부여해야 합니다. 이 역할은 Dataplex 레이크가 설정된 프로젝트에서 부여되어야 합니다.

    • 태스크가 Spark SQL 작업인 경우 결과가 기록되는 버킷에 대한 Cloud Storage 관리자 권한이 필요합니다.

    • Spark SQL 및 커스텀 Spark 태스크를 예약하고 실행하려면 서비스 계정에 대한 Dataplex 메타데이터 리더(roles/dataplex.metadataReader), Dataplex 뷰어(roles/dataplex.viewer), Dataproc Metastore 메타데이터 사용자(roles/metastore.metadataUser) IAM 역할을 부여해야 합니다.

  4. 작업을 제출하는 사용자에게 서비스 계정에 대한 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)을 부여합니다. 자세한 내용은 서비스 계정에 대한 액세스 관리를 참조하세요.

  5. Dataplex 레이크 서비스 계정에 서비스 계정을 사용할 수 있는 권한을 부여합니다. Google Cloud Console레이크 세부정보 페이지에서 Dataplex 레이크 서비스 계정을 찾을 수 있습니다.

  6. Dataplex 레이크가 포함된 프로젝트가 태스크가 실행될 프로젝트와 다른 경우 Dataplex 레이크 서비스 계정에 태스크를 실행하는 프로젝트에 대한 Dataproc 편집자 역할을 부여합니다.

  7. 필수 코드 아티팩트(JAR, Python 또는 SQL 스크립트 파일) 또는 보관처리된 파일(.jar, .tar, .tar.gz, .tgz, .zip)을 Cloud Storage 경로에 배치합니다.

  8. 서비스 계정에 이러한 코드 아티팩트를 저장하는 Cloud Storage 버킷에 대해 필수 storage.objects.get 권한이 있는지 확인합니다.

Spark(자바 또는 Python) 태스크 예약

콘솔

  1. Google Cloud 콘솔에서 Dataplex 페이지로 이동합니다.

    Dataplex로 이동

  2. 프로세스 뷰로 이동합니다.

  3. 태스크 만들기를 클릭합니다.

  4. 커스텀 Spark 태스크 만들기에서 태스크 만들기를 클릭합니다.

  5. Dataplex 레이크를 선택합니다.

  6. 태스크 이름을 제공합니다.

  7. 태스크의 ID를 만듭니다.

  8. 태스크 구성 섹션의 유형에서 Spark 또는 PySpark를 선택합니다.

  9. 관련 인수를 입력합니다.

  10. 서비스 계정 필드에 커스텀 Spark 태스크를 실행할 수 있는 사용자 서비스 계정을 입력합니다.

  11. 계속을 클릭합니다.

  12. 선택사항: 일정 설정: 한 번 실행 또는 반복을 선택합니다. 필수 입력란을 기재합니다.

  13. 계속을 클릭합니다.

  14. 선택사항: 리소스 맞춤설정추가 설정을 추가합니다.

  15. 만들기를 클릭합니다.

gcloud

gcloud CLI 명령어를 사용하여 Spark(자바/Python) 태스크를 예약할 수 있습니다. 다음 표에는 사용할 필수 및 선택 매개변수가 나와있습니다.

매개변수 설명
--lake Dataplex 서비스의 레이크 리소스의 레이크 ID입니다.
--location Dataplex 서비스의 위치입니다.
--spark-main-class 드라이버의 기본 클래스입니다. 클래스가 포함된 jar 파일이 기본 CLASSPATH에 있어야 합니다.
--spark-main-jar-file-uri 기본 클래스가 포함된 jar 파일의 Cloud Storage URI입니다.
--spark-archive-uris 선택사항: 각 실행자의 작업 디렉터리로 추출할 보관 파일의 Cloud Storage URI입니다. 지원되는 파일 형식은 .jar, .tar, .tar.gz, .tgz, .zip입니다.
--spark-file-uris 선택사항: 각 실행자의 작업 디렉터리에 배치할 파일의 Cloud Storage URI입니다.
--batch-executors-count 선택사항: 총 작업 실행자 수입니다. 기본값은 2입니다.
--batch-max-executors-count 선택사항: 구성 가능한 최대 실행자 수입니다. 기본값은 1000입니다. batch-max-executors-countbatch-executors-count보다 크면 Dataplex가 자동 확장을 사용 설정합니다.
--container-image-java-jars 선택사항: classpath에 추가할 자바 JAR 목록입니다. 유효한 입력에는 Jar 바이너리에 대한 Cloud Storage URI가 포함됩니다.
예를 들어 gs://bucket-name/my/path/to/file.jar입니다.
--container-image-properties 선택사항: prefix:property 형식으로 지정된 속성 키입니다.
예를 들어 core:hadoop.tmp.dir입니다.
자세한 내용은 클러스터 속성을 참조하세요.
--vpc-network-tags 선택사항: 작업에 적용할 네트워크 태그 목록입니다.
--vpc-network-name 선택사항: 작업이 실행되는 Virtual Private Cloud 네트워크입니다. 기본적으로 Dataplex는 프로젝트 내에서 Default라는 VPC 네트워크를 사용합니다.
--vpc-network-name 또는 --vpc-sub-network-name 중 하나만 사용해야 합니다.
--vpc-sub-network-name 선택사항: 작업이 실행되는 VPC 서브네트워크입니다.
--vpc-sub-network-name 또는 --vpc-network-name 중 하나만 사용해야 합니다.
--trigger-type 사용자 지정 태스크의 트리거 유형입니다. 값은 다음 중 하나여야 합니다.
ON_DEMAND - 태스크가 생성된 직후에 태스크가 한 번 실행됩니다.
RECURRING - 태스크가 일정에 따라 주기적으로 실행됩니다.
--trigger-start-time 선택사항: 태스크를 처음 실행한 시간입니다. 형식은 `{year}-{MONTH}-{day}T{hour}:{min}:{sec}Z`입니다. 여기서 시간대는 UTC입니다. 예를 들어 '2017-01-15T01:30:00Z'는 2017년 1월 15일 01:30 UTC로 인코딩됩니다. 이 값이 지정되지 않은 경우 트리거 유형이 ON_DEMAND일 때 제출된 후 태스크가 실행되고, 트리거 유형이 RECURRING일 때 지정된 일정에 따라 태스크가 실행됩니다.
--trigger-disabled 선택사항: 태스크가 실행되지 않도록 합니다. 이 매개변수는 이미 실행 중인 태스크를 취소하지 않지만 RECURRING 태스크를 일시적으로 사용 중지합니다.
--trigger-max-retires 선택사항: 취소하기 전에 재시도한 횟수입니다. 실패한 태스크를 다시 시도하지 않으려면 값을 0으로 설정합니다.
--trigger-schedule 태스크를 주기적으로 실행하기 위한 크론 일정
--description 선택사항: 태스크에 대한 설명입니다.
--display-name 선택사항: 태스크의 표시 이름입니다.
--labels 선택사항: 추가할 라벨 KEY=VALUE 쌍의 목록입니다.
--execution-args 선택사항: 태스크에 전달할 인수입니다. 인수는 키-값 쌍의 조합일 수 있습니다. 쉼표로 구분된 키-값 쌍 목록을 실행 인수로 전달할 수 있습니다. 위치 인수를 전달하려면 키를 TASK_ARGS로 설정하고 값을 모든 위치 인수의 쉼표로 구분된 문자열로 설정합니다. 쉼표 이외의 구분 기호를 사용하려면 이스케이프를 참조하세요.
key-value 및 위치 인수가 함께 전달되는 경우 TASK_ARGS가 마지막 인수로 전달됩니다.
--execution-service-account 태스크를 실행하는 데 사용할 서비스 계정입니다.
--max-job-execution-lifetime 선택사항: 작업 실행이 만료되기 전의 최대 기간입니다.
--container-image 선택사항: 작업 런타임 환경의 커스텀 컨테이너 이미지입니다. 지정하지 않으면 기본 컨테이너 이미지가 사용됩니다.
--kms-key 선택사항: 암호화에 사용할 Cloud KMS 키이며 형식은 다음과 같습니다.
projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}

자바 예시:

glcoud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=ON_DEMAND –spark-main-jar-file-uri=<gcs location to java file> --execution-service-account=<service-account-email> --trigger-start-time=<timestamp after which job starts ex. 2099-01-01T00:00:00Z> --labels=key1=value1,key2=value3,key3=value3 --execution-args=arg1=value1,arg2=value3,arg3=value3 <task-id>

PySpark 예시:

gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=RECURRING --trigger-schedule=<Cron schedule https://en.wikipedia.org/wiki/Cron> --spark-python-script-file=<gcs location to python script> --execution-service-account=<service-account-email> --execution-args=^::^arg1=value1::arg2=value2::TASK_ARGS="pos-arg1, pos-arg2" <task-id>

REST

태스크를 만들려면 API 탐색기를 사용합니다.

Spark SQL 태스크 예약

gcloud

Spark SQL 태스크를 예약하려면 다음 추가 매개변수와 함께 Spark(자바 또는 Python) 태스크 예약과 동일한 gcloud CLI 명령어를 실행합니다.

매개변수 설명
--spark-sql-script SQL 쿼리 텍스트. spark-sql-script 또는 spark-sql-script-file 중 하나가 필수입니다.
--spark-sql-script-file 쿼리 파일에 대한 참조입니다. 이 값은 쿼리 파일의 Cloud Storage URI 또는 SQL 스크립트 콘텐츠에 대한 경로일 수 있습니다. spark-sql-script 또는 spark-sql-script-file 중 하나가 필수입니다.
--execution-args Spark SQL 태스크의 경우 다음 인수가 필수이며 위치 인수로 전달되어야 합니다.
--output_location, <GCS uri of the output directory>
--output_format, <output file format>
지원되는 형식은 CSV 파일, JSON 파일, parquet, orc입니다.
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --execution-service-account=<service-account-email> --trigger-type=ON_DEMAND --spark-sql-script=<sql-script> --execution-args=^::^TASK_ARGS="--output_location, <gcs folder location>, --output_format, json" <sql-task-id>

REST

태스크를 만들려면 API 탐색기를 사용합니다.

태스크 모니터링

콘솔

  1. Google Cloud 콘솔에서 Dataplex 페이지로 이동합니다.

    Dataplex로 이동

  2. 프로세스 뷰로 이동합니다.

  3. 태스크 탭에는 태스크 템플릿 유형별로 필터링된 태스크 목록이 있습니다.

  4. 이름 열에서 보려는 태스크를 클릭합니다.

  5. 보려는 태스크의 작업 ID를 클릭합니다.

    Google Cloud 콘솔에서 모니터링 및 출력 세부정보를 볼 수 있는 Dataproc 페이지가 열립니다.

gcloud

다음 표에는 태스크 모니터링을 위한 gcloud CLI 명령어가 나와 있습니다.

작업 gcloud CLI 명령어
태스크 나열 gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id>
태스크 세부정보 보기 gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id>
태스크 작업 나열 gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id>
작업 세부정보 보기 gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>

Dataplex는 Dataproc 서버리스(배치)에서 작업을 실행합니다. Dataplex 작업의 실행 로그를 보려면 다음 단계를 따르세요.

  1. Dataproc 서버리스(배치) 작업 ID를 가져옵니다. 다음 명령어를 실행합니다.

    gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
    
  2. 로그를 조회합니다. 이전 명령어를 실행하여 가져온 작업 ID를 사용하여 다음 명령어를 실행합니다.

    gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
    

REST

태스크작업get 또는 list하려면 API 탐색기를 사용하세요.

일정 관리

Google Cloud 콘솔의 Dataplex 내에서 태스크 일정을 수정하거나 태스크를 삭제하거나 진행 중인 작업을 취소할 수 있습니다. 다음 표에는 이러한 작업의 gcloud CLI 명령어가 나와 있습니다.

작업 gcloud CLI 명령어
태스크 일정 수정 gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id>
태스크 삭제 gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id>
작업 취소 gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>

다음 단계