Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 인덱싱
- AWS
- 농지연금
- python
- serverless
- kubectl
- lambda
- node
- 정책자금
- 매입불공제
- boto3
- 세금계산서
- 임업후계자
- 산지연금
- 공매
- S3
- 신탁공매
- pod
- Kubernetes
- 경매
- 리소스
- Resolver
- OpenSearch
- command
- 외국납부세액공제
- Filter
- 성능개선
- route53
- 금융소득
- 양도소득세
Archives
- Today
- Total
진지한 개발자
Delta Lake 본문
728x90
Delta Lake
- Apache Spark 기반의 오픈소스 데이터 레이크
- 다양한 데이터 소스와 파일 형식을 지원하며, 높은 확장성과 무결성 보장 함
주요 쿼리
1. 데이터 쓰기
from delta import *
data = spark.range(0, 5)
data.write.format("delta").save("/delta-table")
- 위 코드는 Spark DataFrame을 Delta Lake 테이블로 저장하는 예시입니다. Delta Lake는 Spark의 기본 파일 형식이 아닌 별도의 파일 형식을 사용합니다. 이를 위해 delta 포맷을 사용하여 저장합니다.
2. 데이터 읽기
from delta import *
data = spark.read.format("delta").load("/delta-table")
data.show()
- 저장한 Delta Lake 테이블을 읽어서 DataFrame으로 변환
3. 스트리밍 데이터 쓰기
from delta import *
streamingDF.writeStream.format("delta").option("checkpointLocation", "/delta/events/_checkpoints/streaming-agg").start("/delta/events/agg")
- 스파크 스트리밍으로 데이터를 읽어서 Delta Lake 테이블에 저장
- 이를 위해 delta 포맷을 사용하며, checkpointLocation 옵션을 통해 체크포인트 위치를 지정함
4. 시간 여행(Time Travel) 쿼리
from delta import *
data = spark.read.format("delta").option("versionAsOf", 0).load("/delta-table")
data.show()
- Delta Lake 테이블의 이전 버전 데이터를 읽어오는 예시
- ersionAsOf 옵션을 사용하여 이전 버전의 Delta Lake 테이블을 지정
5. 데이터 삭제
from delta import *
deltaTable = DeltaTable.forPath(spark, "/delta-table")
deltaTable.delete("date < '2022-01-01'")
- Delta Lake 테이블에서 date 열의 값이 2022년 1월 1일 이전인 데이터를 삭제
- DeltaTable 클래스의 delete 메서드를 사용하여 데이터를 삭제할 수 있음
checkpoint
스파크의 체크포인트 기능을 사용하여 Delta Lake 테이블의 메타데이터를 저장하는 것을 의미합니다. Delta Lake은 내부적으로 로그 기반 데이터 저장소(Log-based storage)를 사용하기 때문에, 매우 긴 로그 파일이 생성될 수 있습니다. 이 때문에 Delta Lake은 주기적으로 체크포인트를 수행하여, 이전 로그 데이터를 모두 삭제하고 메타데이터를 저장하는 것이 좋습니다.
체크포인트는 일반적으로 로그 데이터를 압축하고, Delta Lake 테이블의 현재 상태를 저장하는 작업을 수행합니다. 이를 통해 로그 데이터의 크기를 줄이고, 더 빠른 쿼리 처리를 가능하게 합니다. 또한, 체크포인트를 수행하면, Delta Lake은 테이블 복구 시간을 단축시킬 수 있습니다. 예를 들어, 스파크 장애나 서버 장애로 인해 Delta Lake 테이블이 손상된 경우, 최근 체크포인트를 사용하여 빠르게 복구할 수 있습니다.
Delta Lake에서는 체크포인트 위치를 checkpointLocation 옵션을 통해 지정할 수 있습니다. 체크포인트 위치는 로그 파일과 Delta Lake 테이블 데이터가 저장되는 위치와는 별도로 지정됩니다. 체크포인트 위치는 HDFS, 로컬 파일 시스템, AWS S3 등 다양한 위치에 지정할 수 있습니다. 체크포인트 위치는 Delta Lake 테이블의 메타데이터와 로그 데이터를 저장하는 중요한 역할을 수행하므로, 적절한 위치에 지정하는 것이 중요합니다.
메타데이터는 commitInfo, metaData, protocol, txn, version 필드로 구성되어 있습니다.
commitInfo: Delta Lake 테이블을 마지막으로 커밋한 시간, 작업 종류, 파티션 정보 등을 포함합니다.
metaData: Delta Lake 테이블의 이름, 설명, 데이터 형식, 파티션 정보, 구성 정보 등을 포함합니다.
protocol: Delta Lake 프로토콜 버전 정보를 포함합니다.
txn: Delta Lake 테이블의 트랜잭션 정보를 포함합니다.
version: Delta Lake 버전 정보를 포함합니다.
Delta Lake은 이러한 메타데이터를 사용하여 테이블을 관리하고, 테이블을 복구하거나 업그레이드하는 등의 작업을 수행합니다.
728x90
'IT > databricks' 카테고리의 다른 글
Delta Lake와 Amazon Redshift 비교 (0) | 2023.02.26 |
---|