템플릿을 사용한 수집

Dataplex는 데이터 수집, 처리, 데이터 수명 주기 관리와 같은 일반적인 데이터 처리 태스크를 수행하기 위한 템플릿(Dataflow 기반)을 제공합니다. 이 가이드에서는 JDBC 연결을 사용하여 데이터를 수집하는 템플릿을 구성하고 실행하는 방법을 설명합니다.

시작하기 전에

Dataplex 태스크 템플릿은 Dataflow를 기반으로 합니다. 템플릿을 사용하기 전에 Dataflow API를 사용 설정합니다.

Dataflow API 사용 설정

템플릿: JDBC 연결을 사용하여 Dataplex로 데이터 수집

Dataplex JDBC 수집 템플릿은 관계형 데이터베이스의 데이터를 Dataplex 애셋 대상으로 복사합니다. Dataplex 애셋은 Cloud Storage 애셋 또는 BigQuery 애셋일 수 있습니다.

이 파이프라인은 JDBC를 사용하여 관계형 데이터베이스에 연결합니다. 추가적인 보안 레이어를 위해 Cloud KMS 키로 암호화된 Base64 인코딩 사용자 이름, 비밀번호 및 연결 문자열 매개변수와 함께 Cloud KMS 키를 전달할 수도 있습니다.

템플릿은 여러 애셋 유형을 투명하게 처리합니다. Cloud Storage 애셋에 저장된 데이터는 Hive 스타일로 분할되며 Dataplex Discovery를 통해 Data Catalog, BigQuery(외부 테이블) 또는 연결된 Dataproc Metastore 인스턴스의 테이블로 자동 사용할 수 있습니다.

템플릿 매개변수

매개변수 설명
driverJars 쉼표를 사용하여 JDBC 드라이버의 Cloud Storage 경로를 구분합니다.
예를 들면 다음과 같습니다. gs://your-bucket/driver_jar1.jar, gs://your-bucket/driver_jar2.jar.
connectionURL JDBC 소스에 연결할 URL 연결 문자열입니다.
예를 들면 다음과 같습니다. jdbc:mysql://some-host:3306/sampledb.
연결 URL을 일반 텍스트 또는 Cloud KMS로 암호화된 Base64 인코딩 문자열로 전달할 수 있습니다.
driverClassName JDBC 드라이버 클래스 이름입니다.
예를 들면 다음과 같습니다. com.mysql.jdbc.Driver.
connectionProperties JDBC 연결에 사용할 속성 문자열입니다.
예를 들면 다음과 같습니다. unicode=true&characterEncoding=UTF-8.
query 데이터를 추출하기 위해 소스에서 실행될 쿼리입니다.
예를 들면 다음과 같습니다. select * from sampledb.sample_table.
outputAsset 결과가 저장되는 Dataplex 출력 애셋 ID입니다 ID에는 projects/your-project/locations/<loc>/lakes/<lake-name>/zones/<zone-name>/assets/<asset-name></code> 형식을 사용합니다. Google Cloud 콘솔의 Dataplex 애셋 세부정보 탭에서 outputAsset을 찾을 수 있습니다.
username JDBC 연결에 사용할 사용자 이름입니다. 사용자 이름을 일반 텍스트 또는 Cloud KMS로 암호화된 Base64 인코딩 문자열로 전달할 수 있습니다.
password JDBC 연결에 사용할 비밀번호입니다. 비밀번호를 일반 텍스트 또는 Cloud KMS로 암호화된 Base64 인코딩 문자열로 전달할 수 있습니다.
outputTable 출력을 작성할 BigQuery 테이블 위치 또는 Cloud Storage 최상위 폴더 이름입니다. BigQuery 테이블 위치인 경우 테이블의 스키마가 소스 쿼리 스키마와 일치해야 하며 some-project-id:somedataset.sometable 형식이어야 합니다. Cloud Storage 최상위 폴더인 경우 최상위 폴더 이름을 제공합니다.
KMSEncryptionKey (선택사항) KMSEncryptionKey 매개변수를 제공하는 경우 Cloud KMS가 password, username, connectionURL을 암호화하도록 합니다. Cloud KMS API 암호화 엔드포인트를 사용하여 이러한 매개변수를 암호화합니다. 예를 들면 다음과 같습니다. projects/your-project/locations/global/keyRings/test/cryptoKeys/quickstart.
writeDisposition (선택사항) 대상 파일/테이블이 있는 경우 사용할 전략입니다. 지원되는 형식은 WRITE_APPEND(테이블이 있으면 행이 추가됨), WRITE_TRUNCATE(테이블/파일 덮어쓰기), WRITE_EMPTY(출력 테이블이 비어 있고 출력 파일이 없어야 함) 및 SKIP(파일이 있으면 파일 쓰기를 건너뜀)입니다. BigQuery의 경우 허용되는 형식은 WRITE_APPEND, WRITE_TRUNCATE, WRITE_EMPTY입니다. Cloud Storage에서 허용되는 형식은 SKIP, WRITE_TRUNCATE, WRITE_EMPTY입니다. 기본값은 WRITE_EMPTY입니다.
partitioningScheme (선택사항) 파일을 쓸 때의 파티션 스키마입니다. 이 매개변수의 기본값은 DAILY입니다. 매개변수의 다른 값은 MONTHLY 또는 HOURLY일 수 있습니다.
partitionColumn (선택사항) 파티션의 기준이 되는 파티션 열입니다. 열 유형은 timestamp/date 형식이어야 합니다. partitionColumn 파라미터를 제공하지 않으면 데이터가 파티션으로 나눠지지 않습니다.
fileFormat (선택사항) Cloud Storage의 출력 파일 형식입니다. 파일은 기본 설정인 Snappy 압축으로 압축됩니다. 이 매개변수의 기본값은 PARQUET입니다. 매개변수의 또 다른 값은 AVRO입니다.
updateDataplexMetadata

(선택사항) 새로 생성된 항목의 Dataplex 메타데이터를 업데이트할지 여부입니다. 이 매개변수의 기본값은 false입니다.

사용 설정하면 파이프라인이 소스의 스키마를 대상 Dataplex 항목으로 자동 복사하고 자동화된 Dataplex 검색은 실행되지 않습니다. 소스에 관리형 스키마가 있는 경우 이 플래그를 사용합니다.

Cloud Storage 대상에서만 지원됩니다.

템플릿 실행

콘솔

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

    Dataplex로 이동

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

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

  4. JDBC를 Dataplex로 수집에서 태스크 만들기를 클릭합니다.

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

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

  7. 태스크 실행 리전을 선택합니다.

  8. 필수 매개변수를 입력합니다.

  9. 계속을 클릭합니다.

gcloud

다음을 바꿉니다.

JOB_NAME: a job name of your choice
PROJECT_ID: your template project ID
DRIVER_JARS: path to your JDBC drivers
CONNECTION_URL: your JDBC connection URL string
DRIVER_CLASS_NAME: your JDBC driver class name
CONNECTION_PROPERTIES: your JDBC connection property string
QUERY: your JDBC source SQL query
OUTPUT_ASSET: your Dataplex output asset ID

셸 또는 터미널에서 템플릿을 실행합니다.

gcloud beta dataflow flex-template run JOB_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--template-file-gcs-location=gs://dataflow-templates-REGION_NAME/latest/flex/Dataplex_JDBC_Ingestion_Preview \
--parameters \
driverJars=DRIVER_JARS,\
connectionUrl=CONNECTION_URL,\
driverClassName=DRIVER_CLASS_NAME,\
connectionProperties=CONNECTION_PROPERTIES,\
query=QUERY\
outputAsset=OUTPUT_ASSET\

REST API

다음을 바꿉니다.

PROJECT_ID: your template project ID
REGION_NAME: region in which to run the job
JOB_NAME: a job name of your choice
DRIVER_JARS: path to your JDBC drivers
CONNECTION_URL: your JDBC connection URL string
DRIVER_CLASS_NAME: your JDBC driver class name
CONNECTION_PROPERTIES: your JDBC connection property string
QUERY: your JDBC source SQL query
OUTPUT_ASSET: your Dataplex output asset ID

HTTP POST 요청을 제출합니다.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION_NAME/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {
          "driverJars": "DRIVER_JARS",
          "connectionUrl": "CONNECTION_URL",
          "driverClassName": "DRIVER_CLASS_NAME",
          "connectionProperties": "CONNECTION_PROPERTIES",
          "query": "QUERY"
          "outputAsset": "OUTPUT_ASSET"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-REGION_NAME/latest/flex/Dataplex_JDBC_Ingestion_Preview",
   }
}

다음 단계