아파치 파케이

아파치 파케이()는 아파치 하둡 생태계에서 사용되는 자유-오픈 소스 컬럼 지향 데이터 저장 형식이다. RCFile 및 ORC와 같이 하둡의 다른 컬럼 기반 저장 파일 형식과 유사하며, 하둡 주변의 대부분의 데이터 처리 프레임워크와 호환된다. 대량의 복잡한 데이터를 처리하기 위한 향상된 성능과 함께 효율적인 데이터 압축 및 부호화 방식을 제공한다.

 역사 
아파치 파케이를 구축하기 위한 오픈 소스 프로젝트는 트위터와 클라우데라의 공동 노력으로 시작되었다. 파케이는 하둡의 창시자인 더그 커팅이 만든 트레브니(Trevni) 컬럼 저장 형식의 개선으로 설계되었다. 첫 번째 버전인 아파치 파케이 1.0은 2013년 7월에 출시되었다. 2015년 4월 27일부터 아파치 파케이는 아파치 소프트웨어 재단 (ASF)이 후원하는 최상위 프로젝트가 되었다.

 기능 
아파치 파케이는 데이터를 저장하는 데 사용될 수 있는 복잡한 자료 구조를 수용하는 레코드 분쇄 및 조립 알고리즘을 사용하여 구현된다. 각 열의 값은 인접한 메모리 위치에 저장되어 다음과 같은 이점을 제공한다.

 컬럼 단위 압축은 저장 공간 효율적이다.
 각 컬럼의 데이터 유형에 특화된 인코딩 및 압축 기술을 사용할 수 있다.
 특정 컬럼 값을 가져오는 쿼리는 전체 행을 읽을 필요가 없어 성능이 향상된다.

아파치 파케이는 아파치 스리프트 프레임워크를 사용하여 구현되어 유연성이 향상되었으며, C++, 자바, 파이썬, PHP 등 다양한 프로그래밍 언어에서 작동할 수 있다.

2015년 8월 현재, 파케이는 아파치 하이브, 아파치 드릴, 아파치 임팔라, 아파치 크런치, 아파치 피그, 캐스케이딩, 프레스토, 아파치 스파크를 포함한 빅데이터 처리 프레임워크를 지원한다. 판다스 파이썬 데이터 조작 및 분석 라이브러리에서 사용되는 외부 데이터 형식 중 하나이다.

 압축 및 부호화 
파케이에서 압축은 컬럼별로 수행되며, 이는 텍스트 및 정수 데이터에 대해 다른 인코딩 방식을 사용할 수 있게 한다. 이 전략은 새로운 더 나은 인코딩 방식이 발명될 때 이를 구현할 수 있는 문을 열어 둔다.

파케이는 다양한 압축 형식을 지원한다: 스내피, Gzip, LZO, 브로틀리, zstd, LZ4.

 사전 부호화 
파케이는 고유 값이 적은 데이터(즉, 105 미만)에 대해 동적으로 자동 사전 부호화를 활성화하여 상당한 압축을 가능하게 하고 처리 속도를 높인다.

 비트 패킹 
정수의 저장은 일반적으로 정수당 32 또는 64비트를 사용한다. 작은 정수의 경우, 여러 정수를 같은 공간에 패킹하면 저장 효율성이 높아진다.

 런 렝스 부호화 (RLE) 
동일한 값의 여러 발생을 최적화하기 위해 런 렝스 부호화가 사용되며, 이는 단일 값이 발생 횟수와 함께 한 번 저장되는 방식이다.

파케이는 비트 패킹과 RLE의 하이브리드를 구현하여, 최상의 압축 결과를 생성하는 방식에 따라 인코딩을 전환한다. 이 전략은 특정 유형의 정수 데이터에 잘 작동하며 사전 인코딩과 잘 결합된다.

 클라우드 저장 및 데이터 레이크 
파케이는 현대 클라우드 기반 데이터 레이크 아키텍처에서 기본적인 파일 형식으로 널리 사용된다. Amazon S3, Azure Data Lake Storage, Google Cloud Storage와 같은 클라우드 저장 시스템은 효율적인 컬럼형 표현과 검색 기능 덕분에 일반적으로 파케이 형식으로 데이터를 저장한다. 아파치 아이스버그, 델타 레이크, 아파치 후디를 포함한 데이터 레이크하우스 프레임워크는 파케이 파일 위에 추가 메타데이터 계층을 구축하여 스키마 진화, 시간 여행 쿼리, ACID 호환 트랜잭션과 같은 기능을 지원한다. 이러한 아키텍처에서 파케이 파일은 불변 저장 계층으로 사용되며, 테이블 형식은 데이터 버전 관리 및 트랜잭션 무결성을 관리한다.

 비교 
아파치 파케이는 RCFile 및 Optimized Row Columnar (ORC) 파일 형식과 비슷하다. 세 가지 모두 하둡 생태계 내에서 컬럼형 데이터 저장 범주에 속한다. 이들은 모두 쓰기 속도가 느려지는 대신 읽기 성능이 향상되고 압축 및 인코딩이 더 좋다. 이러한 기능 외에도 아파치 파케이는 제한된 스키마 진화를 지원한다."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

아파치 애로는 파케이 및 ORC와 같은 디스크 기반 컬럼형 형식의 인메모리 보완으로 설계되었다. 애로 및 파케이 프로젝트에는 두 형식 간의 읽기 및 쓰기를 허용하는 라이브러리가 포함되어 있다."Reading and Writing the Apache Parquet Format". Apache Arrow Documentation. https://arrow.apache.org/docs/python/parquet.html

 구현 
알려진 파케이 구현은 다음과 같다:

 아파치 파케이 (자바)
 아파치 애로 파케이 (C++)
 아파치 애로 파케이 (러스트)
 아파치 애로 파케이 (고)
 jorgecarleitao/parquet2 (러스트)
 cuDF 파케이 (C++)
 fastparquet (파이썬)
 아파치 임팔라 파케이 (C++)
 덕DB 파케이 (C++)
 폴라스 파케이 (러스트)
 벨록스 파케이 (C++)
 parquet-go (ex-segmentio) (고)
 parquet-go (xitongsys) (고)
 하이파케이 (JS)

 같이 보기 

 아파치 애로
 아파치 피그
 아파치 하이브
 아파치 임팔라
 아파치 드릴
 아파치 쿠두
 아파치 스파크
 아파치 스리프트
 트리노 (SQL 쿼리 엔진)
 프레스토 (SQL 질의 엔진)
 SQLite 내장 데이터베이스 시스템
 덕DB 파케이 지원 내장 OLAP 데이터베이스

 각주 

 외부 링크 


 드레멜 논문

분류:아파치 소프트웨어 재단 프로젝트
분류:자유 시스템 소프트웨어
분류:클라우드 컴퓨팅
분류:하둡
분류:아파치 라이선스 소프트웨어
분류:2015년 소프트웨어