델타 레이크란?
Delta Lake는 Databricks의 레이크하우스에 있는 테이블의 기초를 제공하는 최적화된 스토리지 계층입니다. Delta Lake는 ACID 트랜잭션 및 스케일링 가능한 메타데이터 처리를 위해 파일 기반 트랜잭션 로그를 사용하여 Parquet 데이터 파일을 확장하는 오픈 소스 소프트웨어입니다. Delta Lake는 Apache Spark API와 완벽하게 호환되며 구조적 스트리밍과 긴밀하게 통합되도록 개발되어 일괄 처리 및 스트리밍 작업 모두에 단일 데이터 복사본을 쉽게 사용하고 대규모로 증분 처리를 제공할 수 있습니다.
Delta Lake는 Azure Databricks의 모든 작업에 대한 기본 형식입니다. 달리 지정하지 않는 한 Azure Databricks의 모든 테이블은 델타 테이블입니다. Databricks는 원래 Delta Lake 프로토콜을 개발했으며 오픈 소스 프로젝트에 지속적으로 기여하고 있습니다. Databricks 플랫폼의 많은 최적화 및 제품은 Apache Spark 및 Delta Lake에서 제공하는 보증을 기반으로 합니다. Azure Databricks의 최적화에 대한 자세한 내용은 Azure Databricks의 최적화 권장 사항을 참조하세요.
Delta Lake SQL 명령에 대한 참조 정보는 Delta Lake 문을 참조하세요.
Delta Lake 트랜잭션 로그에는 모든 시스템에서 로그를 읽는 데 사용할 수 있는 잘 정의된 오픈 프로토콜이 있습니다. 델타 트랜잭션 로그 프로토콜을 참조하세요.
Delta Lake 시작
Azure Databricks의 모든 테이블은 기본적으로 델타 테이블입니다. Apache Spark DataFrames 사용하든 SQL을 사용하든 간에 기본 설정으로 레이크하우스에 데이터를 저장하면 Delta Lake의 모든 이점을 얻을 수 있습니다.
테이블 만들기, 데이터 읽기, 쓰기 및 업데이트와 같은 기본 Delta Lake 작업의 예는 자습서: Delta Lake참조하세요.
Databricks에는 Delta Lake에 대한 모범 사례를 위한 많은 권장 사항이 있습니다.
Delta Lake로 데이터 변환 및 수집
Azure Databricks는 레이크하우스에 데이터 로드를 가속화하고 간소화하는 다양한 제품을 제공합니다.
- 델타 라이브 테이블:
- 자습서: Databricks에서 첫 번째 ETL 워크로드 실행
- 스트리밍 테이블(Python/SQL 노트북)을 사용하여 데이터 로드
- Databricks SQL 스트리밍 테이블을 사용하여 데이터 로드
- COPY INTO
- 자동 로더
- 데이터 UI 추가
- Parquet 또는 Iceberg 데이터를 Delta Lake로 증분 변환
- Parquet 또는 Iceberg 데이터를 Delta Lake로 일회성 변환
- 타사 파트너
데이터 수집 옵션의 전체 목록은 Databricks 레이크하우스로 데이터 수집을 참조하세요.
Delta Lake 테이블 업데이트 및 수정
Delta Lake를 사용하는 원자성 트랜잭션은 데이터 및 메타데이터를 업데이트하기 위한 많은 옵션을 제공합니다. Databricks는 테이블이 손상되는 것을 방지하기 위해 Delta Lake 파일 디렉터리에서 데이터 및 트랜잭션 로그 파일과 직접 상호 작용하지 않는 것이 좋습니다.
- Delta Lake는 병합 작업을 사용하여 upsert를 지원합니다. 병합사용하여 Delta Lake 테이블에
Upsert를 참조하세요. - Delta Lake는 필터 및 파티션에 따라 선택적 덮어쓰기를 위한 다양한 옵션을 제공합니다. Delta Lake를 사용하여 선택적으로 데이터 덮어쓰기를 참조하세요.
- 데이터를 다시 작성하지 않고 테이블 스키마를 수동으로 또는 자동으로 업데이트할 수 있습니다. Delta Lake 테이블 스키마업데이트를 참조하십시오.
- 데이터를 다시 작성하지 않고 열 매핑을 사용하여 열 이름을 바꾸거나 삭제할 수 있습니다. Delta Lake 열 매핑를 사용하여 열 이름 바꾸기 및 삭제 방법에 대한 내용을
에서 참조하세요.
Delta Lake의 증분 및 스트리밍 워크로드
Delta Lake는 Azure Databricks의 구조적 스트리밍에 최적화되어 있습니다. Delta Live Tables 간소화된 인프라 배포, 향상된 크기 조정 및 관리되는 데이터 종속성을 사용하여 네이티브 기능을 확장합니다.
테이블의 이전 버전 쿼리
델타 테이블에 쓸 때마다 새 테이블 버전이 만들어집니다. 트랜잭션 로그를 사용하여 테이블 수정 내용을 검토하고 이전 테이블 버전을 쿼리할 수 있습니다. Delta Lake 테이블 기록과 작업하기를참조하세요.
Delta Lake 스키마의 향상된 기능
Delta Lake는 쓰기 시 스키마의 유효성을 검사하여 테이블에 기록된 모든 데이터가 설정한 요구 사항과 일치하는지 확인합니다.
- 스키마 적용
- Azure Databricks의 제약 조건
- Delta Lake에서 생성된 열
- 사용자 지정 메타데이터 사용하여 Delta Lake 테이블 보강
Delta Lake를 사용하여 파일 관리 및 데이터 인덱싱
Azure Databricks는 데이터 파일의 크기와 기록에 유지되는 테이블 버전 수에 영향을 주는 Delta Lake에 대한 많은 기본 매개 변수를 설정합니다. Delta Lake는 메타데이터 구문 분석과 물리적 데이터 레이아웃의 조합을 사용하여 쿼리를 수행하기 위해 스캔된 파일 수를 줄입니다.
- 델타 테이블에 액체 클러스터링 기법 사용
- Delta Lake에 대한 데이터 건너뛰기
- 데이터 파일 레이아웃 최적화
- 진공 사용하여 사용하지 않는 데이터 파일 제거
- 데이터 파일 크기를 제어하도록 Delta Lake 구성
Delta Lake 설정 구성 및 검토
Azure Databricks는 Delta Lake 테이블에 대한 모든 데이터와 메타데이터를 클라우드 개체 스토리지에 저장합니다. 테이블 수준 또는 Spark 세션 내에서 많은 구성을 설정할 수 있습니다. 델타 테이블의 세부 정보를 검토하여 구성된 옵션을 검색할 수 있습니다.
Delta Lake 및 Delta Live 테이블을 사용하는 데이터 파이프라인
Azure Databricks는 사용자가 medallion 아키텍처 활용하여 데이터를 정리하고 보강할 때 일련의 테이블을 통해 데이터를 처리하도록 권장합니다. Delta Live Tables 최적화된 실행 및 자동화된 인프라 배포 및 크기 조정을 통해 ETL 워크로드를 간소화합니다.
Delta Lake 기능 호환성
모든 Delta Lake 기능이 모든 버전의 Databricks Runtime에 있는 것은 아닙니다. Delta Lake 버전 관리에 대한 자세한 내용은 Azure Databricks에서 Delta Lake 기능 호환성을 관리하는 방법을 참조 하세요.
Delta Lake API 설명서
델타 테이블에서 대부분의 읽기 및 쓰기 작업의 경우 Spark SQL 또는 Apache Spark DataFrame API를 사용할 수 있습니다.
Delta Lake 관련 SQL 문은 Delta Lake 문을 참조 하세요.
Azure Databricks는 Databricks 런타임에서 Delta Lake API와의 바이너리 호환성을 보장합니다. 각 Databricks 런타임 버전에 패키지된 Delta Lake API 버전을 보려면 Databricks 런타임 릴리스 정보에서 관련 문서의 시스템 환경 섹션을 참조하세요. Python, Scala 및 Java용 Delta Lake API에 대한 설명서는 OSS Delta Lake 설명서를 참조 하세요.