본문 바로가기
BigData/Data Engineering

[Data Enginnering] 파일 형식 .parquet vs .csv vs .avro vs .orc 내부 구조와 읽는 방식에 따른 성능차이

by 스파이디웹 2023. 2. 6.
728x90

1. csv

주요 특징

  • 행 기반(Row based)
  • plain text 기반 파일 형식(바이너리가 아님)
  • human-readable(사람이 알아 볼 수 있는 데이터)
  • flat하고 단순한 스키마
  • 거의 모든 애플리케이션에서 처리 가능

2. parquet

주요 특징

  • 열 기반(Columnar)
  • binary format
  • 내장된 스키마

3. orc(optimized row columnar)

주요 특징

  • Columnar
  • binary format
  • 내장된 스키마

4. avro

주요 특징

  • row based
  • binary format
  • 내장된 스키마
  • Schema Evolution support가 매우 좋음

5. 파일 형식 비교

  csv parquet orc avro
저장 방식 row based column based column based row based
Schema Evolution support 저조 저조 보통 매우 좋음
Text or Binary Text Binary Binary Binary
압축률 매우 좋음(외부 툴에 의해 압축 가능) 좋음 매우 좋음 보통
분할성 보통 좋음 매우 좋음 좋음
호환이 좋은 플랫폼 Spark() Spark, Impala, Arrow, Drill Hive, Presto Kafka, Druid
파일 사이즈 크다(text이기 때문에) 작다 작다 작다
빅데이터 사용 적합하지 않음(3GB 이하일 때 좋은 성능) 적합 적합 적합
데이터 직렬화 지원이 없음(이기종간 네트워크를 통한 데이터 전송이 어려움)(역직렬화는 가능-배열,데이터프레임으로) 지원함 지원함 지원함
인코딩 텍스트 인코딩(특정 데이터 타입에 있어서 비효율적) 바이너리 인코딩(특정 데이터 타입에 있어서 효율적) 바이너리 인코딩(특정 데이터 타입에 있어서 효율적) 바이너리 인코딩(특정 데이터 타입에 있어서 효율적)
스키마 내포 스키마 내포 안함 스키마 내포함(이기종간 호환에서 유리) 스키마 내포함(이기종간 호환에서 유리) 스키마 내포함(이기종간 호환에서 유리)
처리 속도(성능) 복잡한 데이터 구조, 큰 데이터를 다룰 때 느림 큰 데이터를 다룰 때 csv보다 유리함 큰 데이터를 다룰 때 csv보다 유리함 큰 데이터를 다룰 때 csv보다 유리함
versioning 내재된 versioning이 없음 versioning 지원 versioning 지원 versioning 지원
클라우드 저장소와의 호환성 S3, GCS에 저장은 되지만 분석용으로 적합하지 않음 클라우드 및 분석용으로 적합함 클라우드 및 분석용으로 적합함 클라우드 및 분석용으로 적합함
무결성 검사 무결성 검증 불가능 checksum을 통한 무결성 검증 가능 checksum을 통한 무결성 검증 가능 checksum을 통한 무결성 검증 가능
보안 외부 툴이나, 프로토콜로 보안설정을 해야 함 암호화 및 접근제어를 통해 데이터를 보호 암호화 및 접근제어를 통해 데이터를 보호 암호화 및 접근제어를 통해 데이터를 보호
스트리밍 지원 지원 안함(배치용도) 지원함 지원함 지원함
* Schema Evolution support:
이전 스키마 버전으로 데이터가 쌓여있고 스키마가 변경되었을때 어떻게 데이터를 저장하는지에 대한 메커니즘 용어
* 분할성:
“Splitability” refers to the ease with which big data sets can be broken down into smaller independent chunks so that they can be processed by multiple nodes running in a cluster. This enables large scale parallel processing as one machine will not have enough compute power to process the entire dataset. Avro, Parquet and ORC formats are all optimized to support splitability

 

 

참조:

https://medium.com/ssense-tech/csv-vs-parquet-vs-avro-choosing-the-right-tool-for-the-right-job-79c9f56914a8

https://www.adaltas.com/en/2020/07/23/benchmark-study-of-different-file-format/

https://www.clairvoyant.ai/blog/big-data-file-formats

https://www.adaltas.com/en/2021/03/22/performance-comparison-of-file-formats/

https://medium.com/analytics-vidhya/big-data-formats-explained-using-spark-on-azure-gcp-part-1-a83d153c4e66

https://blog.devgenius.io/big-data-file-formats-d980f5d07e44

https://www.linkedin.com/pulse/todays-interesting-facts-syed-ashraf-quadri

728x90

댓글