Puffin 형식
Puffin 형식
Puffin 형식은 Apache Iceberg Puffin 파일을 읽는 입력 형식이에요. deletion-vector-v1 블롭에서 삭제된 행 위치를 노출하며, 유일하게 지원되는 블롭 타입입니다. 다른 블롭 타입을 포함하는 파일은 거부됩니다.
출처: 문서
본문
설명 (Description)
Apache Iceberg Puffin 파일을 읽기 위한 입력 형식입니다. 형식은 deletion-vector-v1 블롭에서 삭제된 행 위치를 노출합니다. 유일하게 지원되는 블롭 타입이며, 다른 블롭 타입(예: apache-datasketches-theta-v1)을 포함하는 파일은 거부됩니다.
Puffin 파일에 여러 deletion-vector-v1 블롭이 포함되어 있으면 형식은 그러한 블롭마다 행 하나를 출력합니다.
고정 출력 컬럼:
referenced_data_file(String) - 삭제 벡터가 적용되는 데이터 파일의 위치(referenced-data-file블롭 속성)deleted_rows(Array(UInt64)) - 삭제 벡터 roaring bitmap에 따라 삭제된 64비트 행 위치
선언된 카디널리티가 절대 실체화 상한(absolute materialization ceiling)을 초과하는 삭제 벡터는 deleted_rows가 요청될 때 거부됩니다. 푸터 deletion-vector-v1 속성(카디널리티가 부호 없는 정수로 파싱되는 것 포함)은 항상 검증됩니다. referenced_data_file만 선택하면 온디스크 페이로드 I/O를 건너뛰므로 envelope, CRC, roaring 역직렬화, 실체화 상한도 건너뜁니다. 의도적으로 경로 전용 프로젝션이 블롭 크기 상한까지 읽지 않도록 합니다.
온디스크 deletion-vector-v1 블롭 길이는 절대 상한(Iceberg의 2 GiB 콘텐츠 크기 검사에 맞춤)으로 제한됩니다. deleted_rows가 요청되면 리더는 전체 페이로드를 할당하기 전에 envelope 헤더(결합된 길이와 매직)를 피킹합니다. CRC는 제한된 읽기 후에 검증됩니다.
LZ4 압축 및 비압축 puffin 푸터가 지원됩니다. 푸터 페이로드 크기(및 선언된 LZ4 콘텐츠 크기)는 해당하는 경우 압축 비율과 절대 상한으로 제한됩니다. 과도하게 큰 푸터는 할당 전에 거부됩니다.
출력 컬럼의 부분집합만 요청할 수 있습니다. 예상치 못한 컬럼 이름이나 타입을 가진 사용자 제공 구조는 형식이 생성될 때 거부됩니다.
사용 예시 (Example usage)
참조된 데이터 파일과 함께 삭제된 행 위치를 읽습니다:
SELECT referenced_data_file, deleted_rows
FROM file(deletes.puffin, Puffin);
삭제된 위치를 개별 행으로 확장합니다:
SELECT referenced_data_file, row_number
FROM file(deletes.puffin, Puffin)
ARRAY JOIN deleted_rows AS row_number
ORDER BY referenced_data_file, row_number;
삭제 벡터를 읽기 전에 푸터 블롭 디스크립터를 검사하려면 PuffinMetadata를 사용하세요.