Hive to BigQuery 템플릿

서버리스 Dataproc Hive to BigQuery 템플릿을 사용하여 Hive에서 BigQuery로 데이터를 추출합니다.

템플릿 사용

gcloud CLI 또는 Dataproc API를 사용해서 템플릿을 실행합니다.

gcloud

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: (필수사항) IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.
  • REGION: (필수사항) Compute Engine 리전입니다.
  • TEMPLATE_VERSION: (필수사항) 최신 템플릿 버전 또는 특정 버전의 날짜로 latest를 지정합니다(예시: 2023-03-17_v0.1.0-beta). 사용 가능한 템플릿 버전을 나열하려면 gs://dataproc-templates-binaries를 방문하거나 gcloud storage ls gs://dataproc-templates-binaries를 실행하세요.
  • SUBNET: (선택사항) 서브넷이 지정되지 않은 경우 default 네트워크의 지정된 리전에 있는 서브넷이 선택됩니다.

    예시: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • HOSTPORT: (필수사항) 소스 Hive 데이터베이스 호스트의 호스트 이름 또는 IP 주소와 포트입니다.

    예시: 10.0.0.33:9083

  • DATASET: (필수사항) BigQuery 출력 데이터 세트 이름입니다.
  • TABLE: (필수사항) BigQuery 출력 테이블 이름입니다.
  • QUERY: (필수사항) Hive에서 데이터를 추출하기 위한 쿼리입니다.
  • TEMP_BUCKET: (필수사항) Cloud Storage 버킷 이름입니다(버킷 이름만 지정). 이 버킷은 BigQuery 로드에 사용됩니다.
  • MODE: (필수사항) BigQuery 출력의 쓰기 모드입니다. 옵션: Append, Overwrite, Ignore, ErrorIfExists.
  • TEMPVIEWTEMPVIEW_SQL_QUERY: (선택사항) 이 두 가지 선택적 매개변수를 사용하여 BigQuery에 데이터를 로드하는 동안 Spark SQL 변환을 적용할 수 있습니다. TEMPVIEW는 임시 뷰 이름이고 TEMPVIEW_SQL_QUERY는 쿼리 문입니다. TEMPVIEW와 TEMPVIEW_SQL_QUERY의 테이블 이름이 일치해야 합니다.
  • SERVICE_ACCOUNT: (선택사항) 입력하지 않으면 기본 Compute Engine 서비스 계정이 사용됩니다.
  • PROPERTYPROPERTY_VALUE: (선택사항) Spark 속성=value 쌍의 쉼표로 구분된 목록입니다.
  • LABELLABEL_VALUE: (선택사항) label=value 쌍의 쉼표로 구분된 목록입니다.
  • LOG_LEVEL: (선택사항) 로깅 수준입니다. ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN 중 하나일 수 있습니다. 기본값은 INFO입니다.
  • KMS_KEY: (선택사항) 암호화에 사용할 Cloud Key Management Service입니다. 키를 지정하지 않으면 Google 소유 및 Google 관리 키를 사용하여 데이터가 저장 상태에서 암호화됩니다.

    예시:projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud dataproc batches submit spark \
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate \
    --version="1.2" \
    --project="PROJECT_ID" \
    --region="REGION" \
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" \
    --subnet="SUBNET" \
    --service-account="SERVICE_ACCOUNT" \
    --properties="spark.hadoop.hive.metastore.uris=thrift://HOST:PORT,PROPERTY=PROPERTY_VALUE" \
    --kms-key="KMS_KEY" \
    --labels="LABEL=LABEL_VALUE" \
    -- --template HIVETOBIGQUERY \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty hivetobq.bigquery.location="PROJECT_ID.DATASET.TABLE" \
    --templateProperty hivetobq.sql="QUERY" \
    --templateProperty hivetobq.temp.gcs.bucket="TEMP_BUCKET" \
    --templateProperty hivetobq.write.mode="MODE" \
    --templateProperty hivetobq.temp.table="TEMPVIEW" \
    --templateProperty hivetobq.temp.query="TEMPVIEW_SQL_QUERY"

Windows(PowerShell)

gcloud dataproc batches submit spark `
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate `
    --version="1.2" `
    --project="PROJECT_ID" `
    --region="REGION" `
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" `
    --subnet="SUBNET" `
    --service-account="SERVICE_ACCOUNT" `
    --properties="spark.hadoop.hive.metastore.uris=thrift://HOST:PORT,PROPERTY=PROPERTY_VALUE" `
    --kms-key="KMS_KEY" `
    --labels="LABEL=LABEL_VALUE" `
    -- --template HIVETOBIGQUERY `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty hivetobq.bigquery.location="PROJECT_ID.DATASET.TABLE" `
    --templateProperty hivetobq.sql="QUERY" `
    --templateProperty hivetobq.temp.gcs.bucket="TEMP_BUCKET" `
    --templateProperty hivetobq.write.mode="MODE" `
    --templateProperty hivetobq.temp.table="TEMPVIEW" `
    --templateProperty hivetobq.temp.query="TEMPVIEW_SQL_QUERY"

Windows(cmd.exe)

gcloud dataproc batches submit spark ^
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^
    --version="1.2" ^
    --project="PROJECT_ID" ^
    --region="REGION" ^
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ^
    --subnet="SUBNET" ^
    --service-account="SERVICE_ACCOUNT" ^
    --properties="spark.hadoop.hive.metastore.uris=thrift://HOST:PORT,PROPERTY=PROPERTY_VALUE" ^
    --kms-key="KMS_KEY" ^
    --labels="LABEL=LABEL_VALUE" ^
    -- --template HIVETOBIGQUERY ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty hivetobq.bigquery.location="PROJECT_ID.DATASET.TABLE" ^
    --templateProperty hivetobq.sql="QUERY" ^
    --templateProperty hivetobq.temp.gcs.bucket="TEMP_BUCKET" ^
    --templateProperty hivetobq.write.mode="MODE" ^
    --templateProperty hivetobq.temp.table="TEMPVIEW" ^
    --templateProperty hivetobq.temp.query="TEMPVIEW_SQL_QUERY"

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: (필수사항) IAM 설정에 나열된 Google Cloud 프로젝트 ID입니다.
  • REGION: (필수사항) Compute Engine 리전입니다.
  • TEMPLATE_VERSION: (필수사항) 최신 템플릿 버전 또는 특정 버전의 날짜로 latest를 지정합니다(예시: 2023-03-17_v0.1.0-beta). 사용 가능한 템플릿 버전을 나열하려면 gs://dataproc-templates-binaries를 방문하거나 gcloud storage ls gs://dataproc-templates-binaries를 실행하세요.
  • SUBNET: (선택사항) 서브넷이 지정되지 않은 경우 default 네트워크의 지정된 리전에 있는 서브넷이 선택됩니다.

    예시: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • HOSTPORT: (필수사항) 소스 Hive 데이터베이스 호스트의 호스트 이름 또는 IP 주소와 포트입니다.

    예시: 10.0.0.33:9083

  • DATASET: (필수사항) BigQuery 출력 데이터 세트 이름입니다.
  • TABLE: (필수사항) BigQuery 출력 테이블 이름입니다.
  • QUERY: (필수사항) Hive에서 데이터를 추출하기 위한 쿼리입니다.
  • TEMP_BUCKET: (필수사항) Cloud Storage 버킷 이름입니다(버킷 이름만 지정). 이 버킷은 BigQuery 로드에 사용됩니다.
  • MODE: (필수사항) BigQuery 출력의 쓰기 모드입니다. 옵션: Append, Overwrite, Ignore, ErrorIfExists.
  • TEMPVIEWTEMPVIEW_SQL_QUERY: (선택사항) 이 두 가지 선택적 매개변수를 사용하여 BigQuery에 데이터를 로드하는 동안 Spark SQL 변환을 적용할 수 있습니다. TEMPVIEW는 임시 뷰 이름이고 TEMPVIEW_SQL_QUERY는 쿼리 문입니다. TEMPVIEW와 TEMPVIEW_SQL_QUERY의 테이블 이름이 일치해야 합니다.
  • SERVICE_ACCOUNT: (선택사항) 입력하지 않으면 기본 Compute Engine 서비스 계정이 사용됩니다.
  • PROPERTYPROPERTY_VALUE: (선택사항) Spark 속성=value 쌍의 쉼표로 구분된 목록입니다.
  • LABELLABEL_VALUE: (선택사항) label=value 쌍의 쉼표로 구분된 목록입니다.
  • LOG_LEVEL: (선택사항) 로깅 수준입니다. ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN 중 하나일 수 있습니다. 기본값은 INFO입니다.
  • KMS_KEY: (선택사항) 암호화에 사용할 Cloud Key Management Service입니다. 키를 지정하지 않으면 Google 소유 및 Google 관리 키를 사용하여 데이터가 저장 상태에서 암호화됩니다.

    예시:projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

HTTP 메서드 및 URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches

JSON 요청 본문:


{
  "environmentConfig":{
    "executionConfig":{
      "subnetworkUri":"SUBNET",
      "kmsKey": "KMS_KEY",
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  },
  "labels": {
    "LABEL": "LABEL_VALUE"
  },
  "runtimeConfig": {
    "version": "1.2",
    "properties": {
      "spark.hadoop.hive.metastore.uris":"thrift://HOST:PORT",
      "PROPERTY": "PROPERTY_VALUE"
    }
  },
  "sparkBatch":{
    "mainClass":"com.google.cloud.dataproc.templates.main.DataProcTemplate",
    "args":[
      "--template","HIVETOBIGQUERY",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","hivetobq.bigquery.location=PROJECT_ID.DATASET.TABLE",
      "--templateProperty","hivetobq.sql=QUERY",
      "--templateProperty","hivetobq.temp.gcs.bucket=TEMP_BUCKET",
      "--templateProperty","hivetobq.write.mode=MODE",
      "--templateProperty","hivetobq.temp.table=TEMPVIEW",
      "--templateProperty","hivetobq.temp.query=TEMPVIEW_SQL_QUERY"
    ],
    "jarFileUris":[
      "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar"
    ]
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.


{
  "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata",
    "batch": "projects/PROJECT_ID/locations/REGION/batches/BATCH_ID",
    "batchUuid": "de8af8d4-3599-4a7c-915c-798201ed1583",
    "createTime": "2023-02-24T03:31:03.440329Z",
    "operationType": "BATCH",
    "description": "Batch"
  }
}