REPAIR TABLE

적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks 런타임

이 명령은 Delta 테이블 메타데이터를 Unity 카탈로그 서비스로 업데이트합니다. 비 Delta 테이블의 경우 테이블의 파티션을 복구하고 Hive 메타스토어를 업데이트합니다.

  • Delta 테이블: SYNC METADATA 인수를 사용하여 Delta 테이블로 실행하는 경우 이 명령은 대상 테이블의 델타 로그를 읽고 메타데이터 정보를 Unity 카탈로그 서비스로 업데이트합니다.
  • 비 Delta 테이블: 비 Delta 테이블로 실행하는 경우 이 명령은 비 Delta 테이블의 디렉터리에 있는 모든 파티션을 복구하고 Hive 메타스토어를 업데이트합니다.

구문

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

Databricks SQL 검사 '예'로 표시 Databricks Runtime 12.2 LTS 이상의 MSCK 경우 검사 '예'로 표시 선택 사항입니다.

매개 변수

  • table_name

    테이블의 이름입니다. 테이블을 찾을 수 없는 경우 Azure Databricks는 TABLE_OR_VIEW_NOT_FOUND 오류를 발생시킵니다.

  • ADD 또는 DROP 또는 SYNCPARTITIONS

    적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks Runtime 10.4 LTS 이상

    PARTITIONED BY 절을 사용하여 비 Delta 테이블을 만들면 파티션이 생성되고 Hive 메타스토어에 등록됩니다. 그러나 기존 데이터에서 분할된 테이블을 만드는 경우에는 파티션이 Hive 메타스토어에 자동으로 등록되지 않습니다. MSCK REPAIR TABLE을 실행하여 파티션을 등록합니다.

    파티션을 복구하는 또 다른 방법은 ALTER TABLE RECOVER PARTITIONS를 사용하는 것입니다.

    테이블이 캐시된 경우 이 명령은 테이블의 캐시된 데이터와 이를 참조하는 모든 종속 항목을 지웁니다. 다음에 테이블 또는 종속 항목에 액세스할 때 캐시가 채워집니다.

    • ADD 명령은 테이블 파티션에 속하지 않은 기본 테이블 폴더의 모든 하위 폴더에 대해 세션 카탈로그에 새 파티션을 추가합니다. 다른 옵션이 지정되지 않으면 ADD가 기본 인수입니다.
    • DROP 명령은 파일 시스템에 위치가 없는 모든 파티션을 세션 카탈로그에서 삭제합니다.
    • SYNCDROPADD의 조합입니다.
  • ** SYNC METADATA**

    대상 테이블의 델타 로그를 읽고 Unity 카탈로그 서비스에서 메타데이터 정보를 업데이트합니다. 이 명령을 실행하려면 대상 테이블에 대한 MODIFY 및 SELECT 권한과 부모 스키마 및 카탈로그의 USAGE 권한이 있어야 합니다. 대상 테이블이 Unity 카탈로그에 저장되지 않은 경우 이 인수가 포함된 이 명령은 실패합니다.

    Delta UniForm을 사용하도록 설정 SYNC METADATA 하면 현재 델타 메타데이터를 Iceberg 메타데이터로 수동 변환을 트리거하고 Unity 카탈로그 Iceberg 엔드포인트에 대한 최신 Iceberg 버전을 동기화합니다. UniForm을 사용하여 Iceberg 클라이언트에서 델타 테이블을 읽는 방법을 참조 하세요.

예제(비 Delta Lake 테이블)

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
  LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;

-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
    name age
  ------- ---
  Michael  20
   Justin  19
     Andy  30

예제(Unity 카탈로그 테이블)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA