아파치 파케이
![]() | |
발표일 | 2013년 3월 13일 |
---|---|
안정화 버전 | 2.11.0
/ 2025년 3월 23일[1] |
저장소 | |
프로그래밍 언어 | 자바 (참조 구현)[2] |
운영 체제 | 크로스 플랫폼 |
종류 | 컬럼 기반 DBMS |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | parquet |
아파치 파케이(영어: Apache Parquet)는 아파치 하둡 생태계에서 사용되는 자유-오픈 소스 컬럼 지향 데이터 저장 형식이다. RCFile 및 ORC와 같이 하둡의 다른 컬럼 기반 저장 파일 형식과 유사하며, 하둡 주변의 대부분의 데이터 처리 프레임워크와 호환된다. 대량의 복잡한 데이터를 처리하기 위한 향상된 성능과 함께 효율적인 데이터 압축 및 부호화 방식을 제공한다.
역사
[편집]아파치 파케이를 구축하기 위한 오픈 소스 프로젝트는 트위터[3]와 클라우데라[4]의 공동 노력으로 시작되었다. 파케이는 하둡의 창시자인 더그 커팅이 만든 트레브니(Trevni) 컬럼 저장 형식의 개선으로 설계되었다. 첫 번째 버전인 아파치 파케이 1.0은 2013년 7월에 출시되었다. 2015년 4월 27일부터 아파치 파케이는 아파치 소프트웨어 재단 (ASF)이 후원하는 최상위 프로젝트가 되었다.[5][6]
기능
[편집]아파치 파케이는 데이터를 저장하는 데 사용될 수 있는 복잡한 자료 구조를 수용하는 레코드 분쇄 및 조립 알고리즘을 사용하여 구현된다.[7][8] 각 열의 값은 인접한 메모리 위치에 저장되어 다음과 같은 이점을 제공한다.[9]
- 컬럼 단위 압축은 저장 공간 효율적이다.
- 각 컬럼의 데이터 유형에 특화된 인코딩 및 압축 기술을 사용할 수 있다.
- 특정 컬럼 값을 가져오는 쿼리는 전체 행을 읽을 필요가 없어 성능이 향상된다.
아파치 파케이는 아파치 스리프트 프레임워크를 사용하여 구현되어 유연성이 향상되었으며, C++, 자바, 파이썬, PHP 등 다양한 프로그래밍 언어에서 작동할 수 있다.[10]
2015년 8월 현재[11], 파케이는 아파치 하이브, 아파치 드릴, 아파치 임팔라, 아파치 크런치, 아파치 피그, 캐스케이딩, 프레스토, 아파치 스파크를 포함한 빅데이터 처리 프레임워크를 지원한다. 판다스 파이썬 데이터 조작 및 분석 라이브러리에서 사용되는 외부 데이터 형식 중 하나이다.
압축 및 부호화
[편집]파케이에서 압축은 컬럼별로 수행되며, 이는 텍스트 및 정수 데이터에 대해 다른 인코딩 방식을 사용할 수 있게 한다. 이 전략은 새로운 더 나은 인코딩 방식이 발명될 때 이를 구현할 수 있는 문을 열어 둔다.
파케이는 다양한 압축 형식을 지원한다: 스내피, Gzip, LZO, 브로틀리, zstd, LZ4.[12]
사전 부호화
[편집]파케이는 고유 값이 적은 데이터(즉, 105 미만)에 대해 동적으로 자동 사전 부호화를 활성화하여 상당한 압축을 가능하게 하고 처리 속도를 높인다.[13]
비트 패킹
[편집]정수의 저장은 일반적으로 정수당 32 또는 64비트를 사용한다. 작은 정수의 경우, 여러 정수를 같은 공간에 패킹하면 저장 효율성이 높아진다.[13]
런 렝스 부호화 (RLE)
[편집]동일한 값의 여러 발생을 최적화하기 위해 런 렝스 부호화가 사용되며, 이는 단일 값이 발생 횟수와 함께 한 번 저장되는 방식이다.[13]
파케이는 비트 패킹과 RLE의 하이브리드를 구현하여, 최상의 압축 결과를 생성하는 방식에 따라 인코딩을 전환한다. 이 전략은 특정 유형의 정수 데이터에 잘 작동하며 사전 인코딩과 잘 결합된다.[13]
클라우드 저장 및 데이터 레이크
[편집]파케이는 현대 클라우드 기반 데이터 레이크 아키텍처에서 기본적인 파일 형식으로 널리 사용된다. Amazon S3, Azure Data Lake Storage, Google Cloud Storage와 같은 클라우드 저장 시스템은 효율적인 컬럼형 표현과 검색 기능 덕분에 일반적으로 파케이 형식으로 데이터를 저장한다.[14] 아파치 아이스버그[15], 델타 레이크[16], 아파치 후디[17]를 포함한 데이터 레이크하우스 프레임워크는 파케이 파일 위에 추가 메타데이터 계층을 구축하여 스키마 진화, 시간 여행 쿼리, ACID 호환 트랜잭션과 같은 기능을 지원한다. 이러한 아키텍처에서 파케이 파일은 불변 저장 계층으로 사용되며, 테이블 형식은 데이터 버전 관리 및 트랜잭션 무결성을 관리한다.
비교
[편집]아파치 파케이는 RCFile 및 Optimized Row Columnar (ORC) 파일 형식과 비슷하다. 세 가지 모두 하둡 생태계 내에서 컬럼형 데이터 저장 범주에 속한다. 이들은 모두 쓰기 속도가 느려지는 대신 읽기 성능이 향상되고 압축 및 인코딩이 더 좋다. 이러한 기능 외에도 아파치 파케이는 제한된 스키마 진화를 지원한다.[18] 즉, 데이터 변경에 따라 스키마를 수정할 수 있다. 또한 새로운 컬럼을 추가하고 충돌하지 않는 스키마를 병합하는 기능도 제공한다.[19]
아파치 애로는 파케이 및 ORC와 같은 디스크 기반 컬럼형 형식의 인메모리 보완으로 설계되었다. 애로 및 파케이 프로젝트에는 두 형식 간의 읽기 및 쓰기를 허용하는 라이브러리가 포함되어 있다.[20]
구현
[편집]알려진 파케이 구현은 다음과 같다:
같이 보기
[편집]각주
[편집]- ↑ “Apache Parquet – Releases”. 《Apache.org》. 2025년 5월 12일에 확인함.
- ↑ “Parquet-MR source code”. 《GitHub》. 2018년 6월 11일에 원본 문서에서 보존된 문서. 2019년 7월 2일에 확인함.
- ↑ “Release Date”. 2016년 10월 20일에 원본 문서에서 보존된 문서. 2016년 9월 12일에 확인함.
- ↑ “Introducing Parquet: Efficient Columnar Storage for Apache Hadoop - Cloudera Engineering Blog” (미국 영어). 2013년 3월 13일. 2013년 5월 4일에 원본 문서에서 보존된 문서. 2018년 10월 22일에 확인함.
- ↑ “Apache Parquet paves the way for better Hadoop data storage”. 2015년 4월 28일. 2017년 5월 31일에 원본 문서에서 보존된 문서. 2017년 5월 21일에 확인함.
- ↑ “The Apache Software Foundation Announces Apache™ Parquet™ as a Top-Level Project : The Apache Software Foundation Blog”. 2015년 4월 27일. 2017년 8월 20일에 원본 문서에서 보존된 문서. 2017년 5월 21일에 확인함.
- ↑ “The striping and assembly algorithms from the Google-inspired Dremel paper”. 《github》. 2020년 10월 26일에 원본 문서에서 보존된 문서. 2017년 11월 13일에 확인함.
- ↑ “Apache Parquet Documentation”. 2016년 9월 5일에 원본 문서에서 보존된 문서. 2016년 9월 12일에 확인함.
- ↑ “Apache Parquet Cloudera”. 2016년 9월 19일에 원본 문서에서 보존된 문서. 2016년 9월 12일에 확인함.
- ↑ “Apache Thrift”. 2021년 3월 12일에 원본 문서에서 보존된 문서. 2016년 9월 14일에 확인함.
- ↑ “Supported Frameworks”. 2015년 2월 2일에 원본 문서에서 보존된 문서. 2016년 9월 12일에 확인함.
- ↑ “Parquet Compression”. 《Apache Parquet Documentation》. Apache Software Foundation. 2024년 3월 11일. 2024년 12월 2일에 확인함.
- ↑ 가 나 다 라 “Announcing Parquet 1.0: Columnar Storage for Hadoop | Twitter Blogs”. 《blog.twitter.com》. 2016년 10월 20일에 원본 문서에서 보존된 문서. 2016년 9월 14일에 확인함.
- ↑ “Apache Parquet”. 《Apache Parquet》. 2025년 3월 13일에 확인함.
- ↑ “Apache Iceberg”. 2025년 3월 13일에 확인함.
- ↑ “Delta Lake”. 2025년 3월 13일에 확인함.
- ↑ “Apache Hudi”. 2025년 3월 13일에 확인함.
- ↑ "All About Parquet Part 04 — Schema Evolution in Parquet". Medium. https://medium.com/data-engineering-with-dremio/all-about-parquet-part-04-schema-evolution-in-parquet-c2c2b1aa6141
- ↑ "All About Parquet Part 04 — Schema Evolution in Parquet". Medium. https://medium.com/data-engineering-with-dremio/all-about-parquet-part-04-schema-evolution-in-parquet-c2c2b1aa6141
- ↑ "Reading and Writing the Apache Parquet Format". Apache Arrow Documentation. https://arrow.apache.org/docs/python/parquet.html
외부 링크
[편집]- 아파치 파케이
- 공식 웹사이트
- 더 파케이 형식 및 성능 최적화 기회 - 유튜브
- 드레멜 논문