REPAIR TABLE
적용 대상: Databricks SQL Databricks Runtime
이 명령은 Delta Lake가 아닌 tables대한 파티션을 복구하거나 수정합니다. Delta Lake와 함께 SYNC METADATA
절을 사용하여 table 메타데이터를 기반으로 catalog 서비스를 update하거나, Iceberg 읽기를 위해 설정된 tables의 Iceberg 메타데이터를 generate하세요.
지원되는 기능은 Unity Catalog 및 Hive 메타스토어와 tables Delta Lake에서 지원하는지 여부 간에 다릅니다.
구문
[ MSCK ] REPAIR TABLE table_name
{
[ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}
Databricks SQL Databricks Runtime 12.2 LTS 이상의 경우 MSCK
선택 사항입니다.
Parameters
-
table의 이름입니다. Azure Databricks에서 table을(를) 찾을 수 없는 경우 TABLE_OR_VIEW_NOT_FOUND 오류 메시지가 발생합니다.
ADD
또는DROP
또는SYNC
PARTITIONS
적용 대상: Databricks SQL Databricks Runtime 10.4 LTS 이상
PARTITIONED BY
절을 사용하여 델타 형식이 아닌 table을(를) 만들 때, 파티션이 생성되어 Hive 메타스토어에 등록됩니다. 그러나 기존 데이터에서 분할된 table 만드는 경우 파티션은 Hive 메타스토어에 자동으로 등록되지 않습니다.MSCK REPAIR TABLE
을 실행하여 파티션을 등록합니다.파티션을 복구하는 또 다른 방법은 ALTER TABLE RECOVER PARTITIONS사용하는 것입니다.
table 캐시된 경우 명령은 table캐시된 데이터와 이를 참조하는 모든 종속 데이터를 지웁니다. 다음에 table 또는 관련 종속 항목에 액세스할 때 캐시가 채워지게 됩니다.
- ADD 명령은 table 파티션에 속하지 않는 기본 table 폴더의 모든 하위 폴더에 대한 세션 catalog 새 파티션을 추가합니다. 다른 옵션이 지정되지 않으면 ADD가 기본 인수입니다.
- DROP 명령은 파일 시스템에 존재하지 않는 위치가 있는 세션 catalog 모든 파티션을 삭제합니다.
- SYNC은 DROP와 ADD의 조합입니다.
SYNC METADATA
Delta Lake만 해당됩니다.
대상 table 트랜잭션 로그를 읽고 catalog 서비스에서 메타데이터 정보를 업데이트합니다. 이 명령을 실행하려면 대상 table 대한 MODIFY 및 SELECT 권한과 부모 schema 및 catalog대한 USE SCHEMA 및 USE CATALOG 권한이 있어야 합니다.
이 인수는 Databricks Runtime 16.1 이상의 Hive 메타스토어에서 작동합니다. Hive 메타스토어 tables의 경우, USAGE 및 MODIFY 권한을 가지고 있어야 합니다.
Delta UniForm을 사용하도록 설정한 경우(Unity Catalog필요)
SYNC METADATA
현재 델타 메타데이터를 Iceberg 메타데이터로 수동으로 변환하고 Unity Catalog Iceberg 엔드포인트에 대한 최신 Iceberg 버전을 동기화합니다. 를 참조하고Iceberg 클라이언트로 델타 tables을 읽어보세요.
예제(Delta Lake가 아닌 tables)
-- 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 Catalogtable)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA