CONVERT TO DELTA
적용 대상: Databricks SQL Databricks Runtime
기존 Parquet 테이블을 그 자리에서 Delta 테이블로 변환합니다. 이 명령은 디렉터리의 모든 파일을 나열하고, 이러한 파일을 추적하는 Delta Lake 트랜잭션 로그를 만들고, 모든 Parquet 파일의 바닥글을 읽어 데이터 스키마를 자동으로 유추합니다. 변환 프로세스는 변환된 델타 테이블의 쿼리 성능을 향상시키기 위해 통계를 수집합니다. 테이블 이름을 제공하는 경우 메타스토어도 업데이트되어 이제 테이블이 델타 테이블임을 반영합니다.
이 명령은 기본 파일 형식이 Parquet인 Iceberg 테이블 변환을 지원합니다. 이 경우 변환기는 Iceberg 테이블의 네이티브 파일 매니페스트, 스키마 및 분할 정보를 기반으로 Delta Lake 트랜잭션 로그를 생성합니다.
구문
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
매개 변수
-
선택적으로 정규화된 테이블 식별자 또는
parquet
혹은iceberg
파일 디렉터리의 경로입니다. 이름에는 임시 사양 또는 옵션 사양이 포함되어서는 안됩니다. Iceberg 테이블의 경우 관리되는 빙산 테이블 변환이 지원되지 않으므로 경로만 사용할 수 있습니다. 통계 없음
변환 프로세스 중에 통계 컬렉션을 우회하고 변환을 더 빨리 완료합니다. 테이블이 Delta Lake로 변환된 후
OPTIMIZE ZORDER BY
사용하여 데이터 레이아웃을 다시 구성하고 통계를 생성할 수 있습니다.-
지정된 열을 사용하여 만든 테이블을 분할합니다.
table_name
이 경로인 경우 분할된 데이터에PARTITIONED BY
가 필요합니다.table_name
정규화된 테이블 식별자인 경우PARTITIONED BY
절은 선택 사항이며 메타스토어에서 파티션 사양이 로드됩니다. 두 접근법에서 디렉터리 구조가 제공되거나 로드된PARTITIONED BY
사양을 준수하지 않으면 변환 프로세스가 중단되고 예외가 throw됩니다.참고 항목
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로 설정합니다.