다음을 통해 공유


REPAIR TABLE

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

이 명령은 Delta Lake가 아닌 테이블에 대한 파티션을 복구하거나 수정합니다. Delta Lake에서 SYNC METADATA 절을 사용하여 테이블 메타데이터를 기반으로 카탈로그 서비스를 업데이트하거나 Iceberg 읽기에 사용하도록 설정된 테이블에 대한 Iceberg 메타데이터를 생성합니다.

지원되는 기능은 Unity 카탈로그와 Hive 메타스토어와 Delta Lake에서 테이블을 지원하는지 여부에 따라 다릅니다.

구문

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

Databricks SQL 예로 표시된 확인 Databricks Runtime 12.2 LTS 이상의 check marked yes 경우 MSCK 선택 사항입니다.

매개 변수

  • table_name

    테이블의 이름입니다. 테이블을 찾을 수 없는 경우 Azure Databricks에서 TABLE_OR_VIEW_NOT_FOUND 오류가 발생합니다.

  • ADD 또는 DROP 또는 SYNCPARTITIONS

    적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime 10.4 LTS 이상

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

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

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

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

    Delta Lake만 해당됩니다.

    대상 테이블의 트랜잭션 로그를 읽고 카탈로그 서비스에서 메타데이터 정보를 업데이트합니다. 이 명령을 실행하려면 대상 테이블에 대한 MODIFY 및 SELECT 권한과 부모 스키마 및 카탈로그에 대한 USE SCHEMA 및 USE CATALOG 권한이 있어야 합니다.

    이 인수는 Databricks Runtime 16.1 이상의 Hive 메타스토어에서 작동합니다. Hive 메타스토어 테이블의 경우 USAGE 및 MODIFY 권한이 있어야 합니다.

    Delta UniForm을 사용하도록 설정한 경우(Unity 카탈로그 필요) SYNC METADATA 현재 델타 메타데이터를 Iceberg 메타데이터로 수동으로 변환하고 Unity 카탈로그 Iceberg 엔드포인트에 대한 최신 Iceberg 버전을 동기화합니다. 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