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