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
인수와 라벨을 지정하여 작업을 실행할 수 있습니다.
시작하기 전에
Dataproc API를 사용 설정합니다.
네트워크 또는 서브네트워크에서 비공개 Google 액세스를 사용 설정합니다. Dataplex 태스크와 함께 사용하는 네트워크에서 비공개 Google 액세스를 사용 설정합니다. Dataplex 태스크를 만들 때 네트워크 또는 서브네트워크를 지정하지 않은 경우에는 Dataplex에서 기본 서브네트워크를 사용하며 기본 서브네트워크에 대해 비공개 Google 액세스를 사용 설정해야 합니다.
서비스 계정을 만듭니다. 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 역할을 부여해야 합니다.
작업을 제출하는 사용자에게 서비스 계정에 대한 서비스 계정 사용자 역할(
roles/iam.serviceAccountUser
)을 부여합니다. 자세한 내용은 서비스 계정에 대한 액세스 관리를 참조하세요.Dataplex 레이크 서비스 계정에 서비스 계정을 사용할 수 있는 권한을 부여합니다. Google Cloud Console의 레이크 세부정보 페이지에서 Dataplex 레이크 서비스 계정을 찾을 수 있습니다.
Dataplex 레이크가 포함된 프로젝트가 태스크가 실행될 프로젝트와 다른 경우 Dataplex 레이크 서비스 계정에 태스크를 실행하는 프로젝트에 대한 Dataproc 편집자 역할을 부여합니다.
필수 코드 아티팩트 (JAR, Python 또는 SQL 스크립트 파일) 또는 보관처리된 파일 (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
)을 Cloud Storage 경로에 배치합니다.서비스 계정에 이러한 코드 아티팩트를 저장하는 Cloud Storage 버킷에 대해 필수
storage.objects.get
권한이 있는지 확인합니다.
Spark(자바 또는 Python) 태스크 예약
콘솔
Google Cloud 콘솔에서 Dataplex 페이지로 이동합니다.
프로세스 뷰로 이동합니다.
태스크 만들기를 클릭합니다.
커스텀 Spark 태스크 만들기에서 태스크 만들기를 클릭합니다.
Dataplex 레이크를 선택합니다.
태스크 이름을 제공합니다.
태스크의 ID를 만듭니다.
태스크 구성 섹션의 유형에서 Spark 또는 PySpark를 선택합니다.
관련 인수를 입력합니다.
서비스 계정 필드에 커스텀 Spark 태스크를 실행할 수 있는 사용자 서비스 계정을 입력합니다.
계속을 클릭합니다.
선택사항: 일정 설정: 한 번 실행 또는 반복을 선택합니다. 필수 입력란을 기재합니다.
계속을 클릭합니다.
선택사항: 리소스 맞춤설정 및 추가 설정을 추가합니다.
만들기를 클릭합니다.
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-count 가 batch-executors-count 보다 크면 Dataplex가 자동 확장을 사용 설정합니다.
|
--container-image-java-jars |
선택사항: 클래스 경로에 추가할 Java 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 |
선택사항: 작업이 실행되는 가상 프라이빗 클라우드 네트워크입니다. 기본적으로 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}
|
Java 예시:
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 탐색기를 사용합니다.
태스크 모니터링
콘솔
Google Cloud 콘솔에서 Dataplex 페이지로 이동합니다.
프로세스 뷰로 이동합니다.
태스크 탭에는 태스크 템플릿 유형별로 필터링된 태스크 목록이 있습니다.
이름 열에서 확인할 태스크를 클릭합니다.
보려는 태스크의 작업 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 작업의 실행 로그를 보려면 다음 단계를 따르세요.
Dataproc 서버리스(배치) 작업 ID를 가져옵니다. 다음 명령어를 실행합니다.
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
로그를 조회합니다. 이전 명령어 실행에서 가져온 작업 ID를 사용하여 다음 명령어를 실행합니다.
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
일정 관리
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> |
다음 단계
- Dataproc 템플릿을 참고하세요.
- Dataplex Cloud Storage 애셋에서 BigQuery로 데이터를 점진적으로 이동하려면 사전 빌드된 템플릿을 사용해 보세요.
- Dataplex 태스크에 대한 경고 및 알림 설정을 참조하세요.