https://debugginglife.hashnode.dev/delta-lake-apache-iceberg
전 회사에서는 Databricks와 Delta Lake를 사용하다가, 현 회사에서 Apache Iceberg를 주로 사용 중입니다. 처음엔 익히 들었던 것처럼 “별 다른 점이 없는 스토리지 포맷 아닌가?" 하고 금방 적응할 수 있을 거라 생각했는데, 생각보다 주요한 점들이 달랐습니다.
평소에 학습할 때, 기존에 알고 있는 개념과 연관지어 이해하는 걸 좋아하는 편이라 개념을 정리할 겸 iceberg 와 Delta Lake 에 대해 아래 항목에 대해서 정리해봤습니다.
Copy
Copy
table/
├── part-00001.parquet
├── part-00002.parquet
└──_delta_log/
├── 00000000000000000000.json
├── 00000000000000000001.json
└── 00000000000000000010.checkpoint.parquet
Copy
Copy
// 00000000000000000001.json 내용
{
"add": {
"path": "part-00001.parquet",
"partitionValues": {"date": "2024-01-01"},
"size": 1024000,
"stats": "{\\"numRecords\\":1000}"
}
}
Delta Lake는 정말 심플합니다. _delta_log 폴더 하나에 모든 히스토리를 JSON으로 기록합니다.
각각의 JSON 은 버전을 의미하며, Version N = Version N-1 + Actions 공식으로 동작하죠.
각 버전별 메타데이터 정보에 대해서 빠짐없이 기록합니다. 또한 별도로 설정을 변경하지 않는 한 10개 커밋마다 Parquet checkpoint를 생성해서 성능을 최적화합니다.
Copy