MoR 에서 CoW 로의 변환을 위해 Spark 작업 제출하기

적용됩니다: 스파크 엔진 글루텐 가속 스파크 엔진

이 항목에서는 읽기 병합( MoR ) 형식에서 쓰기 복사( CoW ) 형식으로 Iceberg 테이블 데이터를 동기화하는 데 도움이 되는 Spark 작업을 실행하는 방법에 대해 설명합니다. 읽기 작업은 Iceberg Copy-On-Write 테이블을 사용하면 더 효율적입니다.

다음 방법 중 하나를 사용하여 변환할 수 있습니다:

  • COW 테이블 등록: 이 접근 방식은 MoR 테이블의 압축된 일관된 버전을 가리키며 CoW 테이블 역할을 하는 Iceberg Register_table API를 사용하여 MoR 테이블에 대한 명명된 참조를 생성합니다. 이 방법을 권장하며 비용 효율성이 더 높습니다.
  • 데이터 캡처 변경(CDC): 이 접근 방식은 테이블의 복사본을 두 개 유지합니다. 하나는 업데이트가 이루어지는 MoR 테이블이고, 다른 하나는 MoR 테이블의 미러 역할을 하는 CoW 테이블입니다. Spark 작업은 Iceberg CDC 절차를 사용하여 MoR 테이블에서 마지막 동기화된 스냅샷과 최신 스냅샷 사이의 변경 사항을 검색하여 CoW 테이블에 병합합니다. 이 접근 방식은 MoR 테이블의 복제본을 유지하기 때문에 등록 테이블 접근 방식보다 비용이 더 많이 듭니다.

이 태스크에 대한 정보

COW 테이블 접근 방식 등록

Merge-on-Read( MoR ) 테이블이 있는 경우 필요한 매개변수 값을 지정하고 다음 샘플 페이로드를 사용하여 변환 작업을 실행할 수 있습니다. 이 작업은 MoR 테이블의 Iceberg 작업을 동기화하고 간결한 Cow 테이블을 생성합니다.

{
    "application_details": {
        "application": "/opt/ibm/spark/builtin-apps/iceberg/iceberg-apps.jar",
        "class": "com.ibm.iceberg.apps.RegisterCowTable",
        "arguments": [
            "--catalog","<catalog-name>",
            "--database","<database-name>",
            "--mor-table","<mor-table-name>",
            "--cow-table","<cow-table-name>"
        ],
        "conf": {
            "spark.hadoop.wxd.apikey" : "Basic <encoded-api-key>"
        },
    }
}

매개변수 값:

  • <catalog-name>: MoR 테이블을 사용할 수 있는 아이스버그 카탈로그.
  • <database-name> MoR 테이블을 사용할 수 있는 데이터베이스입니다.
  • <mor-table-name> MoR 테이블의 이름입니다.
  • <cow-table-name> MoR 테이블과 동기화되는 CoW 테이블의 이름입니다.
  • <encoded-api-key> 값은 형식이어야 합니다. echo -n "ibmlhapikey_<사용자_id>:<사용자의 API 키>" | base64. 여기서 <user_id>는 데이터 버킷에 액세스하는 데 사용되는 API 키를 가진 사용자의 IBM Cloud ID입니다. 여기서 <IAM_APIKEY>는 오브젝트 스토어 버킷에 액세스하는 사용자의 API 키입니다. API 키를 생성하려면 watsonx.data 콘솔에 로그인하고 프로필 > 프로필 및 설정 > API 키로 이동하여 새 API 키를 생성합니다.

데이터 캡처(CDC) 접근 방식 변경

Merge-on-Read( MoR ) 테이블이 있는 경우 필요한 매개변수 값을 지정하고 다음 샘플 페이로드를 사용하여 변환 작업을 실행할 수 있습니다. 이 작업은 MoR 테이블의 Iceberg 작업을 동기화하고 간결한 Cow 테이블을 생성합니다.

{
    "application_details": {
        "application": "/opt/ibm/spark/builtin-apps/iceberg/iceberg-apps.jar",
        "class": "com.ibm.iceberg.apps.CDCSync",
        "arguments": [
            "--catalog","<catalog-name>",
            "--database","<database-name>",
            "--mor-table","<mor-table-name>",
            "--cow-table","<cow-table-name>",
            "--primary-key","<primary-key>"
        ],
        "conf": {
            "spark.hadoop.wxd.apikey" : "Basic <encoded-api-key>",
        }
    }
}

매개변수 값:

  • <catalog-name>: MoR 테이블을 사용할 수 있는 아이스버그 카탈로그.
  • <database-name> MoR 테이블을 사용할 수 있는 데이터베이스입니다.
  • <mor-table-name> MoR 테이블의 이름입니다.
  • <cow-table-name> MoR 테이블과 동기화되는 CoW 테이블의 이름입니다.
  • <primary-key> CoW 테이블을 만드는 데 사용되는 기본 키입니다.
  • <encoded-api-key> 값은 형식이어야 합니다. echo -n "ibmlhapikey_<사용자_id>:<사용자의 API 키>" | base64. 여기서 <user_id>는 데이터 버킷에 액세스하는 데 사용되는 API 키를 가진 사용자의 IBM Cloud ID입니다. 여기서 <IAM_APIKEY>는 오브젝트 스토어 버킷에 액세스하는 사용자의 API 키입니다. API 키를 생성하려면 watsonx.data 콘솔에 로그인하고 프로필 > 프로필 및 설정 > API 키로 이동하여 새 API 키를 생성합니다.