델타로 변환

적용 대상:검사 표시됨 예 Databricks SQL 검사 예 Databricks Runtime으로 표시됨

기존 Parquet 테이블을 현재 위치의 Delta 테이블로 변환합니다. 이 명령은 디렉터리의 모든 파일을 나열하고, 이러한 파일을 추적하는 Delta Lake 트랜잭션 로그를 만들고, 모든 Parquet 파일의 바닥글을 읽어 데이터 스키마를 자동으로 유추합니다. 변환 프로세스는 변환된 Delta 테이블의 쿼리 성능을 향상시키기 위해 통계를 수집합니다. 테이블 이름을 제공하는 경우 메타스토어도 이제 테이블이 Delta 테이블임을 반영하도록 업데이트됩니다.

이 명령은 기본 파일 형식이 Parquet인 Iceberg 테이블 변환을 지원합니다. 이 경우 변환기는 Iceberg 테이블의 네이티브 파일 매니페스트, 스키마 및 분할 정보를 기반으로 Delta Lake 트랜잭션 로그를 생성합니다.

구문

CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]

매개 변수

  • Table_name

    필요에 따라 정규화된 테이블 식별자 또는 또는 iceberg 파일 디렉터리에 대한 parquet 경로입니다. 이름에 임시 사양이 포함되어서는 안됩니다. Iceberg 테이블의 경우 관리되는 빙산 테이블 변환이 지원되지 않으므로 경로만 사용할 수 있습니다.

  • 통계 없음

    변환 프로세스 중에 통계 수집을 우회하고 변환을 더 빠르게 완료합니다. 테이블을 Delta Lake로 변환한 후 를 사용하여 OPTIMIZE ZORDER BY 데이터 레이아웃을 다시 구성하고 통계를 생성할 수 있습니다.

  • 분할 기준

    만든 테이블을 지정된 열로 분할합니다. 가 경로 PARTITIONED BY 인 경우 table_name 는 분할된 데이터에 필요합니다. 가 table_name 정규화된 테이블 식별자 PARTITIONED BY 인 경우 절은 선택 사항이며 파티션 사양은 메타스토어에서 로드됩니다. 두 방법 중 하나에서 디렉터리 구조가 제공되거나 로드된 사양을 준수하지 않으면 변환 프로세스가 중단되고 예외가 PARTITIONED BY 발생합니다.

    참고

    Databricks Runtime 11.1 이하 PARTITIONED BY 에서는 분할된 모든 데이터에 필요한 인수입니다.

참고

메타스토어에 등록된 Iceberg 테이블 또는 테이블에 대한 분할 정보를 제공할 필요가 없습니다.

CONVERT TO DELTA database_name.table_name; -- only for Parquet tables

CONVERT TO DELTA parquet.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`
  PARTITIONED BY (date DATE); -- if the table is partitioned

CONVERT TO DELTA iceberg.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`; -- uses Iceberg manifest for metadata

주의 사항

Delta Lake에서 추적하지 않는 파일은 보이지 않으며 를 실행할 VACUUM때 삭제할 수 있습니다. 변환 프로세스 중에 데이터 파일을 업데이트하거나 추가하지 않아야 합니다. 테이블이 변환된 후 모든 쓰기가 Delta Lake를 통과하는지 확인합니다.

여러 외부 테이블이 동일한 기본 Parquet 디렉터리를 공유할 수 있습니다. 이 경우 외부 테이블 중 하나에서 실행하는 CONVERT 경우 기본 디렉터리가 Parquet에서 Delta Lake로 변환되었기 때문에 다른 외부 테이블에 액세스할 수 없습니다. 이러한 외부 테이블을 다시 쿼리하거나 쓰려면 해당 테이블도 실행 CONVERT 해야 합니다.

CONVERT 는 스키마 및 테이블 속성과 같은 카탈로그 정보를 Delta Lake 트랜잭션 로그에 채웁니다. 기본 디렉터리가 이미 Delta Lake로 변환되었으며 해당 메타데이터가 카탈로그 메타데이터와 다른 경우 가 convertMetastoreMetadataMismatchException throw됩니다.

Databricks Runtime을 사용하는 동안 Delta Lake 트랜잭션 로그에서 기존 메타데이터를 덮어쓰려면 CONVERT SQL 구성 spark.databricks.delta.convert.metadataCheck.enabled 을 false로 설정합니다.

변환 실행 취소

데이터 파일을 변경할 수 있는 또는 OPTIMIZE 과 같은 DELETE Delta Lake 작업을 수행한 경우:

  1. 가비지 수집에 대해 다음 명령을 실행합니다.
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
  1. 디렉터리를 <path-to-table>/_delta_log 삭제합니다.