Azure Databricks는 Delta Lake 기능 호환성을 어떻게 관리하나요?
Delta Lake는 Linux Foundation의 거버넌스 하에 있는 독립적인 오픈 소스 프로젝트입니다. Databricks는 Databricks 런타임 릴리스에서 Delta Lake를 기반으로 하는 새로운 Delta Lake 기능 및 최적화를 지원합니다.
Delta Lake 기능을 활용하는 Azure Databricks 최적화는 호환성을 위해 OSS Delta Lake에서 사용되는 프로토콜을 준수합니다.
많은 Azure Databricks 최적화를 위해서는 테이블에서 Delta Lake 기능을 사용하도록 설정해야 합니다. Delta Lake 기능은 항상 이전 버전과 호환되므로 더 낮은 Databricks Runtime 버전에서 작성된 테이블은 더 높은 Databricks Runtime 버전에서 항상 읽고 쓸 수 있습니다. 일부 기능을 사용하도록 설정하면 더 낮은 Databricks Runtime 버전에서 실행되는 워크로드와의 호환성이 중단됩니다. 향후 호환성을 중단하는 기능의 경우 호환 Databricks Runtime 버전을 사용하도록 업그레이드된 테이블을 참조하는 모든 워크로드를 업데이트해야 합니다.
참고 항목
Azure Databricks에서 삭제 deletionVectors
v2Checkpoint
columnMapping
typeWidening-preview
할 수 있습니다. 델타 테이블 기능 삭제를 참조하세요.
Important
모든 프로토콜 변경 작업은 모든 동시 쓰기와 충돌합니다.
스트리밍 읽기는 테이블 메타데이터를 변경하는 커밋이 발생하면 실패합니다. 스트림을 계속하려면 다시 시작해야 합니다. 권장 방법은 구조적 스트리밍에 대한 프로덕션 고려 사항을 참조하세요.
Databricks 런타임 업그레이드가 필요한 Delta Lake 기능은 무엇인가요?
다음 Delta Lake 기능은 호환성을 중단합니다. 기능은 테이블 단위로 사용하도록 설정됩니다. 이 표에는 Azure Databricks에서 여전히 지원되는 가장 낮은 Databricks 런타임 버전이 나열되어 있습니다.
기능 | Databricks 런타임 버전 이상이 필요합니다. | 설명서 |
---|---|---|
CHECK 제약 조건 |
Databricks Runtime 9.1 LTS | Azure Databricks에서 CHECK 제약 조건 설정 |
데이터 피드 변경 | Databricks Runtime 9.1 LTS | Azure Databricks에서 Delta Lake 변경 데이터 피드 사용 |
생성된 열 | Databricks Runtime 9.1 LTS | Delta Lake에서 생성된 열 |
열 매핑 | Databricks Runtime 10.4 LTS | Delta Lake 열 매핑을 사용하여 열 이름 바꾸기 및 삭제 |
ID 열 | Databricks Runtime 10.4 LTS | Delta Lake에서 ID 열 사용 |
테이블 기능 | Databricks Runtime 12.2 LTS | 테이블 기능이란? |
삭제 벡터 | Databricks Runtime 12.2 LTS | 삭제 벡터란? |
TimestampNTZ | Databricks Runtime 13.3 LTS | TIMESTAMP_NTZ 형식 |
제복 | Databricks Runtime 13.3 LTS | UniForm을 사용하여 Iceberg 클라이언트에서 델타 테이블 읽기 |
Liquid 클러스터링 | Databricks Runtime 13.3 LTS | 델타 테이블에 액체 클러스터링 사용 |
행 추적 | Databricks Runtime 14.1 | 델타 테이블에 행 추적 사용 |
형식 확대 | Databricks Runtime 15.2 | 형식 확장 |
변형 | Databricks Runtime 15.3 | Delta Lake의 Variant 지원 |
Databricks Runtime 릴리스 정보 버전 및 호환성을 참조하세요.
참고 항목
Delta Live Tables 및 Databricks SQL은 새로운 기능을 지원하기 위해 정규 릴리스로 런타임 환경을 자동으로 업그레이드합니다. Delta Live Tables 릴리스 정보 및 릴리스 업그레이드 프로세스 및 Databricks SQL 릴리스 정보를 참조하세요.
테이블 프로토콜 사양이란?
모든 델타 테이블에는 테이블이 지원하는 기능 집합을 나타내는 프로토콜 사양이 있습니다. 프로토콜 사양은 테이블을 읽거나 쓰는 애플리케이션에서 테이블이 지원하는 모든 기능을 처리할 수 있는지 확인하는 데 사용됩니다. 애플리케이션이 테이블의 프로토콜에서 지원되는 것으로 나열된 기능을 처리하는 방법을 모르는 경우 해당 애플리케이션은 해당 테이블을 읽거나 쓸 수 없습니다.
프로토콜 사양은 읽기 프로토콜과 쓰기 프로토콜의 두 가지 구성 요소로 구분됩니다.
Warning
대부분의 프로토콜 버전 업그레이드는 되돌릴 수 없으며 프로토콜 버전을 업그레이드하면 기존 Delta Lake 테이블 판독기, 기록기 또는 둘 다 중단될 수 있습니다. Databricks는 Delta Lake의 새 기능에 옵트인하는 등 필요한 경우에만 특정 테이블을 업그레이드하는 것이 좋습니다. 또한 현재 및 미래의 모든 프로덕션 도구가 새 프로토콜 버전의 Delta Lake 테이블을 지원하는지 확인해야 합니다.
프로토콜 다운그레이드는 일부 기능에 사용할 수 있습니다. 델타 테이블 기능 삭제를 참조하세요.
프로토콜 읽기
읽기 프로토콜은 테이블을 올바르게 읽기 위해 테이블이 지원하고 애플리케이션이 이해해야 하는 모든 기능을 나열합니다. 테이블의 읽기 프로토콜을 업그레이드하려면 모든 판독기 애플리케이션이 추가된 기능을 지원해야 합니다.
Important
델타 테이블에 쓰는 모든 애플리케이션은 테이블의 스냅샷을 생성할 수 있어야 합니다. 따라서 델타 테이블에 쓰는 워크로드는 판독기 및 기록기 프로토콜 요구 사항을 모두 준수해야 합니다.
Azure Databricks의 워크로드에서 지원되지 않는 프로토콜이 발생하는 경우 해당 프로토콜을 지원하는 더 높은 Databricks 런타임으로 업그레이드해야 합니다.
프로토콜 작성
쓰기 프로토콜은 테이블에 올바르게 쓰려면 테이블이 지원하고 애플리케이션이 이해해야 하는 모든 기능을 나열합니다. 테이블의 쓰기 프로토콜을 업그레이드하려면 모든 기록기 애플리케이션이 추가된 기능을 지원해야 합니다. 읽기 프로토콜도 업그레이드되지 않는 한 읽기 전용 애플리케이션에는 영향을 주지 않습니다.
어떤 프로토콜을 업그레이드해야 합니까?
일부 기능을 사용하려면 읽기 프로토콜과 쓰기 프로토콜을 모두 업그레이드해야 합니다. 다른 기능을 사용하려면 쓰기 프로토콜만 업그레이드해야 합니다.
예를 들어 제약 조건에 대한 CHECK
지원은 쓰기 프로토콜 기능입니다. 즉, 쓰기 애플리케이션만 제약 조건에 대해 CHECK
알고 적용해야 합니다.
반면 열 매핑을 사용하려면 읽기 및 쓰기 프로토콜을 모두 업그레이드해야 합니다. 데이터는 테이블에 다르게 저장되므로 판독기 애플리케이션은 데이터를 올바르게 읽을 수 있도록 열 매핑을 이해해야 합니다.
최소 판독기 및 기록기 버전
참고 항목
열 매핑을 사용하도록 설정할 때 테이블 프로토콜 버전을 명시적으로 업그레이드해야 합니다.
테이블에서 델타 기능을 사용하도록 설정하면 테이블 프로토콜이 자동으로 업그레이드됩니다. Databricks는 및 minWriterVersion
테이블 속성을 변경하지 않도록 minReaderVersion
권장합니다. 이러한 테이블 속성을 변경해도 프로토콜 업그레이드가 방지되지는 않습니다. 이러한 값을 더 낮은 값으로 설정해도 테이블이 다운그레이드되지는 않습니다. 델타 테이블 기능 삭제를 참조하세요.
테이블 기능이란?
Databricks Runtime 12.2 LTS 이상에서 Delta Lake 테이블 기능은 지정된 테이블에서 지원하는 기능을 지정하는 세분화된 플래그를 도입합니다. Databricks Runtime 11.3 LTS 이하에서 Delta Lake 기능은 프로토콜 버전이라는 번들에서 사용하도록 설정되었습니다. 테이블 기능은 프로토콜 버전의 후속 버전이며 Delta Lake를 읽고 쓰는 클라이언트의 유연성 향상을 목표로 설계되었습니다. 프로토콜 버전이란?을 참조하세요.
참고 항목
테이블 기능에는 프로토콜 버전 요구 사항이 있습니다. 프로토콜 버전별 기능을 참조하세요.
델타 테이블 기능은 테이블이 특정 기능을 지원한다는 것을 나타내는 표식입니다. 모든 기능은 쓰기 프로토콜 기능(쓰기 프로토콜만 업그레이드) 또는 읽기/쓰기 프로토콜 기능입니다(읽기 및 쓰기 프로토콜이 기능을 사용하도록 업그레이드됨을 의미).
Delta Lake에서 지원되는 테이블 기능에 대한 자세한 내용은 Delta Lake 프로토콜을 참조하세요.
테이블 기능이 Delta Lake 기능의 사용 방식을 변경합니까?
Azure Databricks를 통해서만 델타 테이블과 상호 작용하는 경우 최소 Databricks 런타임 요구 사항을 사용하여 Delta Lake 기능에 대한 지원을 계속 추적할 수 있습니다. Azure Databricks는 테이블에서 사용하는 모든 기능이 해당 릴리스에서 지원되는 한 모든 Databricks Runtime LTS 릴리스에서 테이블 기능으로 업그레이드된 델타 테이블 읽기를 지원합니다.
다른 시스템을 사용하여 델타 테이블에서 읽고 쓰는 경우 시스템이 업그레이드된 프로토콜 버전을 이해할 수 없는 위험이 있으므로 테이블 기능이 호환성에 미치는 영향을 고려해야 할 수 있습니다.
Important
테이블 기능은 기록기 버전 7 및 판독기 버전 3에 대한 Delta Lake 형식에 도입되었습니다. Azure Databricks는 테이블 기능에 대한 지원을 추가하기 위해 지원되는 모든 Databricks 런타임 LTS 버전에 대한 코드를 백포트했지만 해당 Databricks 런타임에서 이미 지원되는 기능에 대해서만 지원됩니다. 즉, 테이블 기능을 사용하여 생성된 열을 사용하도록 설정하고 Databricks Runtime 9.1 LTS에서 이러한 테이블로 계속 작업할 수 있지만 ID 열이 활성화된 테이블(Databricks Runtime 10.4 LTS 필요)은 해당 Databricks 런타임에서 여전히 지원되지 않습니다.
프로토콜 버전이란?
프로토콜 버전은 테이블 기능의 특정 그룹을 나타내는 프로토콜 번호입니다. Databricks Runtime 11.3 LTS 이하에서는 테이블 기능을 개별적으로 사용하도록 설정할 수 없습니다. 프로토콜 버전은 기능 그룹을 번들로 묶습니다.
델타 테이블은 읽기 프로토콜 및 쓰기 프로토콜에 대한 별도의 프로토콜 버전을 지정합니다. Delta 테이블의 트랜잭션 로그에는 Delta Lake 진화를 지원하는 프로토콜 버전 관리 정보가 포함되어 있습니다. 설명 세부 정보를 사용하여 Delta Lake 테이블 세부 정보 검토를 참조하세요.
프로토콜 버전은 이전 프로토콜의 모든 기능을 번들로 묶습니다. 프로토콜 버전별 기능을 참조하세요.
참고 항목
기록기 버전 7 및 판독기 버전 3부터 Delta Lake는 테이블 기능의 개념을 도입했습니다. 이제 테이블 기능을 사용하여 데이터 에코시스템의 다른 클라이언트에서 지원하는 기능만 사용하도록 선택할 수 있습니다. 테이블 기능이란?을 참조하세요.
프로토콜 버전별 기능
다음 표에는 Delta Lake 기능에 필요한 최소 프로토콜 버전이 나와 있습니다.
참고 항목
Databricks 런타임 호환성에만 관심이 있는 경우 Databricks 런타임 업그레이드가 필요한 Delta Lake 기능을 참조 하세요. 델타 공유는 필요한 minReaderVersion
= 1
기능이 있는 테이블 읽기만 지원합니다.
기능 | minWriterVersion |
minReaderVersion |
설명서 |
---|---|---|---|
기본 기능 | 2 | 1 | Delta Lake란? |
CHECK 제약 조건 |
3 | 1 | Azure Databricks에서 CHECK 제약 조건 설정 |
데이터 피드 변경 | 4 | 1 | Azure Databricks에서 Delta Lake 변경 데이터 피드 사용 |
생성된 열 | 4 | 1 | Delta Lake에서 생성된 열 |
열 매핑 | 5 | 2 | Delta Lake 열 매핑을 사용하여 열 이름 바꾸기 및 삭제 |
ID 열 | 6 | 2 | Delta Lake에서 ID 열 사용 |
테이블 기능 읽기 | 7 | 1 | 테이블 기능이란? |
테이블 기능 쓰기 | 7 | 3 | 테이블 기능이란? |
행 추적 | 7 | 1 | 델타 테이블에 행 추적 사용 |
삭제 벡터 | 7 | 3 | 삭제 벡터란? |
TimestampNTZ | 7 | 3 | TIMESTAMP_NTZ 형식 |
Liquid 클러스터링 | 7 | 3 | 델타 테이블에 액체 클러스터링 사용 |
제복 | 7 | 2 | UniForm을 사용하여 Iceberg 클라이언트에서 델타 테이블 읽기 |
형식 확대 | 7 | 3 | 형식 확장 |
변형 | 7 | 3 | Delta Lake의 Variant 지원 |