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://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://blog.devgenius.io/big-data-file-formats-d980f5d07e44
https://www.linkedin.com/pulse/todays-interesting-facts-syed-ashraf-quadri
728x90
'BigData > Data Engineering' 카테고리의 다른 글
[Data Engineering] CCA Spark and Hadoop Developer Exam(CCA175) 정보와 준비 자료 (0) | 2023.03.07 |
---|---|
[Data Engineering] 데이터 엔지니어가 읽으면 좋을 책 추천 목록(+ 내가 읽은 순서, 읽을 순서) (6) | 2022.09.09 |
댓글