https://parquet.apache.org/docs/concepts/
Concepts
Glossary of relevant terminology.
parquet.apache.org
Motivation
우리는 Parquet를 개발한 이유는 압축된 효율적인 columnar data 표현의 장점을 Hadoop 생태계의 모든 프로젝트에서 사용할 수 있도록 하기 위해서입니다.
Parquet은 복잡한 중첩 데이터 구조를 고려하여 구축되었으며, Dremel 논문에서 설명한 record shredding 및 assembly 알고리즘을 사용합니다. 우리는 이 접근 방식이 중첩된 네임스페이스를 단순히 평면화하는 것보다 우수하다고 믿습니다.
Parquet은 매우 효율적인 압축 및 인코딩 스키마를 지원하기 위해 구축되었습니다. 여러 프로젝트에서 데이터에 적합한 압축 및 인코딩 스키마를 적용하는 것의 성능 영향을 보여주었습니다. Parquet은 압축 스키마를 열 단위로 지정할 수 있도록 하며, 더 많은 인코딩이 발명되고 구현될 수 있도록 미래 지향적으로 설계되었습니다.
Parquet은 누구나 사용할 수 있도록 구축되었습니다. Hadoop 생태계는 데이터 처리 프레임워크로 풍부하며, 우리는 특정 프레임워크를 선호하지 않습니다. 효율적이고 잘 구현된 columnar 저장소 기반은 복잡하고 설정하기 어려운 종속성의 비용 없이 모든 프레임워크에 유용하다고 믿습니다.
Concepts
용어 해설
- Block (hdfs 블록): 이는 hdfs의 블록을 의미하며, 이 파일 형식을 설명하는 데에는 변경되지 않은 의미를 갖습니다. 이 파일 형식은 hdfs 위에서 잘 작동하도록 설계되었습니다.
- File : 파일에는 파일의 메타데이터가 포함되어야 합니다. 실제로 데이터를 포함할 필요는 없습니다.
- Row group : 데이터를 로우로 논리적으로 수평으로 분할한 것입니다. 로우 그룹에는 데이터 세트의 각 열에 대한 컬럼 청크가 있습니다. 로우 그룹에는 보증된 물리적 구조가 없습니다.
- Column chunk : 특정 컬럼의 데이터 청크입니다. 이들은 특정 로우 그룹에 속하며 파일에서 연속적으로 보장됩니다.
- Page : 컬럼 청크는 페이지로 분할됩니다. 페이지는 개념적으로 압축과 인코딩의 단위입니다. 컬럼 청크에는 여러 페이지 유형이 있으며, 이들은 컬럼 청크 내에서 교차되어 있습니다.
계층적으로, 파일은 하나 이상의 로우 그룹으로 구성됩니다. 로우 그룹은 데이터 세트의 각 컬럼에 정확히 하나의 컬럼 청크를 포함합니다. 컬럼 청크는 하나 이상의 페이지를 포함합니다.
Benefits
- 전체 행 데이터를 load 하지 않고도 특정 열 값을 가져올 수 있다.
- 효율적인 열 단위 압축이 가능하다.
- 데이터 웨어하우스, 데이터 마트 등 빠르게 데이터를 가져와야할 OLAP와의 높은 호환성
'Database' 카테고리의 다른 글
[SQL] NULLIF, NVL(COALESCE) 함수 (0) | 2023.08.19 |
---|---|
[SQL] Count 함수, Sequel vs SQL (0) | 2023.08.19 |
[알쓸] Mysql database 정렬 (0) | 2023.07.31 |
[Mysql] python executemany 사용시 TypeError: not all arguments converted during string ... (0) | 2022.03.23 |
[Mysql] Python Sql query Format Error (0) | 2022.03.21 |