Data Engineering/개념

Parquet vs ORC 데이터 파일 형식 비교하기.

히또아빠 2023. 9. 22. 10:54

데이터 엔지니어링 분야에서 일하거나 빅 데이터를 다루는 분석가, 과학자라면 데이터를 처리할 때(저장, 호출 등) 스토리지 및 처리에 적합한 파일 형식을 선택해야 한다. 적절한 데이터 파일 형식을 선택함에 따라 대용량 데이터를 효율적으로 저장하고 처리할 수 있는데 그 중 인기 있는 두 가지 파일 형식인 Apache Parquet(아파치 파케이)와 ORC(Optimized Row Columnar)에 대해 설명한다.


1.Apache Parquet(아파치 파케이)란?

Apache Parquet은 하둡(hadoop) 에코시스템의 모든 프로젝트에서 사용할 수 있는 컬럼 스토리지 파일 형식이다. 효율성과 성능을 위해 설계되었으며 특히 대규모 데이터셋에서 복잡한 쿼리를 실행하는 데 적합하다. Parquet 파일을 쓸 때 모든 칼럼은 호환성을 위해 자동으로 null을 허용하도록 변경 된다.

장점

  • Columnar Storage: 열 기반으로 데이터를 처리하면 행 기반으로 압축헀을때에 비해 디스크 입출력 및 압축 효율성이 향상되고 디스크에서 메모리로 전송되는 데이터의 양을 줄여 쿼리 속도가 빨라진다. 필요한 특정 컬럼을 선택해 처리할 수 있어 효율적.
  • Schema Evolution: Parquet은 복잡한 중첩 데이터 구조를 지원한다. 즉, 컬럼에 동일한 데이터 타입이 저장되기 때문에 컬럼별로 적합한 스키마를 지정해서 인코딩 가능하다.
  • 압축: Parquet은 압축 및 인코딩 방식이 좋다. 디스크 저장 공간을 줄이고 특히 데이터 분석에서  컬럼 데이터 검색 시 성능을 향상시킨다.(열 기반 데이터 처리이니까) Snappy, Gzip 등 다양한 압축 알고리즘을 사용한다. 열 단위로 다양한 압축 코덱을 사용할 수 있어 각 열에 가장 적합한 압축 방법을 선택할 수 있는 유연하다.

출처: 파이콘 발표 자료

단점

  • 쓰기 작업량이 많은 경우(write-heavy): Parquet는 열 단위로 압축 및 인코딩을 수행하기 때문에 쓰기 작업량이 많은 작업의 경우 데이터 쓰기 비용이 많이 들 수 있다.
  • 소규모 데이터: 열 기반의 데이터 장점은 소규모 데이터 셋에서 뚜렷하지 않다.

사용 케이스

 읽기 작업량이 많은 워크로드나 Apache Spark 또는 Apache Arrow와 같은 툴을 사용하여 분석을 수행, 특히 크고 복잡한 중첩된 데이터 구조를 처리할 때 Parquet 데이터 형식을 사용하는 것은 적절하다. 또한, Parquet의 컬럼 스토리지 접근 방식은 집계 쿼리가 일반적인 데이터 웨어하우징 솔루션에 매우 적합.

 

2.Optimized Row Columnar(ORC)

ORC는 하둡 에코시스템의 또 다른 인기 있는 파일 포맷으로, 하둡 워크로드를 위해 설계된 Parquet와 같은 열 기반 데이터 형식이다. Hive에 최적화 되어 있다.(Parquet는 Spark에 최적화)

장점

  • 압축: ORC는 효율적인 압축으로 알려져 있다. 일반적으로 Parquet에 비해 우수한 압축비를 달성하여 스토리지 비용을 절감하고 쿼리 성능을 향상시킬 수 있다.
  • ACID 트랜잭션: ORC 파일은 업데이트, 삭제 및 병합과 같은 기능을 제공하는 HIVE의 ACID 트랜잭션과 매우 잘 작동합니다.

단점

  • 커뮤니티 지원 감소: Parquet에 비해 ORC는 커뮤니티 지원이 적으며, 이 파일 형식에 대한 리소스, 라이브러리 및 도구가 적다.
  • 쓰기 비용: Parquet와 유사하게 ORC는 원주형 특성으로 인해 쓰기 비용이 높을 수 있다

사용 케이스

ORC는 고속 쓰기가 필요한 경우, 특히 Hive 기반 프레임워크에서 일반적으로 사용된다. ACID 속성을 지원하기 때문에 데이터 수정(업데이트 및 삭제)이 필요할 때도 어울리는 데이터 형식이다. 마지막으로 복잡한 데이터 유형과 중첩된 데이터 유형을 사용할 때 ORC를 선택하는 것이 좋다.

 

3.Parquet vs ORC 비교표

  Parquet ORC
Data Storage Style 컬럼 스토리지 형식 컬럼 스토리지 형식
압축(Compression)  Snappy, Gzip 등 다양한 압축 알고리즘을 사용. 열 단위로 다양한 압축 코덱을 사용할 수 있어 각 열에 가장 적합한 압축 방법을 선택할 수 있는 유연성을 제공. 효율적인 압축. 일반적으로 Parquet에 비해 우수한 압축비를 달성하여 스토리지 비용을 절감하고 쿼리 성능을 향상.
호환성(Compatibility)  Apache Spark, Apache Hive, Apache Drill 등 많은 빅데이터 처리 프레임워크에서 지원되며 많은 프로그래밍 언어와 라이브러리에서도 지원. Hadoop 에코시스템 내의 Hive 프로젝트에 의해 처음 개발되었기 때문에 Hive와 강한 통합성을 가지고 있음. Apache Spark와 같은 다른 프레임워크에서 지원되지만 Parquet만큼 광범위한 지원을 받지는 못할 수도 있음.
스키마 변화(Schema Evolution) 스키마 진화를 지원하여 기존 데이터와의 호환성을 끊지 않고 데이터셋의 열을 추가, 제거, 수정할 수 있다. 이는 시간이 지남에 따라 데이터 구조가 변화하는 데 유용합니다. 스키마 발전도 지원하므로 변화하는 데이터 요구사항을 처리할 때 유연함.
성능(Performance) 다양한 분석 및 데이터 처리 작업 부하에서 성능이 우수한 것으로 알려져 있으며, 효율적인 인메모리 데이터 처리를 위해 Apache Arrow와 함께 사용되는 경우가 많음. 고성능을 위해 설계되었으며 압축 기능을 통해 특히 Hive 기반 환경에서 쿼리를 더 빠르게 실행.

4.결론

Parquet 및 ORC 파일 형식은 모두 빅데이터 환경에서 컬럼 스토리지를 위한 장점이 있으며 특정 사용 사례, 호환성 요구사항 및 성능 고려 사항에 따라 선택이 달라질 수 있다. Parquet은 읽기 작업량이 많은 분석 작업에서 빛을 발하며, 컬럼 스토리지를 통해 탁월한 성능을 제공한다. 반면 ORC는 쓰기 작업을 처리할 때 탁월한 압축률과 ACID 트랜잭션 지원을 제공한다.

이들의 장점, 제한사항, 이상적인 사용 사례를 이해하면 데이터 엔지니어링 작업에서 이러한 강력한 파일 형식을 최대한 활용할 수 있다.

 

5.Reference

https://medium.com/@diehardankush/why-parquet-vs-orc-an-in-depth-comparison-of-file-formats-5fc3b5fdac2e

 

Why Parquet vs. ORC: An In-depth Comparison of File Formats

If you work in the field of data engineering, data warehousing, or big data analytics, you’re likely no stranger to dealing with large…

medium.com

https://medium.com/@diehardankush/comparing-data-storage-parquet-vs-arrow-aa2231e51c8a

 

Comparing Data Storage: Parquet vs. Arrow

Data storage formats have significant implications on how quickly and efficiently we can extract and process data. In today’s blog, we’re…

medium.com

https://arrow.apache.org/overview/

 

Format

Arrow Format

arrow.apache.org

 

300x250
반응형