Data Engineering/Spark

Parquet와 csv 차이

조은학 2022. 12. 28. 18:16
  • parquet란?

column-oriented로 데이터 저장과 조회에 효율 적인 성능을 보이는 데이터 파일 형식이다.

 

 

  • parquet 특징

데이터를 대량으로 처리하기 위해 효율적인 데이터를 압축할 수 있고 인코딩 체계를 제공하여준다.

row가 아닌 column 기반으로 저장하여 저장 공간을 절약하고 분석 속도를 늘렸다.

위의 두 특징은 column 기반으로 저장 방식의 특징이기도 하다.

 

 

  • Columnar Format으로의 데이터 저장의 장점

Columnar Format 조회 시 관련이 없는 데이터를 매우 빠르게 건너뛸 수 있으므로 속도가 빠르다.

(필요한 데이터만 조회하면 되는 것이다)

각 column의 데이터 유형이 매우 유사하므로 각 열의 압축이 간단하여, 쿼리 속도가 훨씬 빠르다

 

 

  • Parquet와 CSV의 차이

Parquet는 csv 보다 대규모 데이터에서 저장공간을 1/3까지 줄일 수 있도록 지원한다.

 

  S3에서의 저장용량 쿼리 실행 속도 Data Scanned 비용
csv 1TB 236 초 1.15 TB 5.75 불
parquet 130GB 6.78 초 2.51 GB 0.01 불
차이 87% 감소 34배 빠름 99% 감소 99.7% 절약

 

 

출처 : what is parquet(databricks)

 

What Is Apache Parquet

Learn more about the open source file format Apache Parquet, its applications in data science, and its advantages over CSV and TSV formats.

www.databricks.com

 


테스트

진행하고 있는 프로젝트에서 csv와 parquet의 속도 차이를 비교해보았다.

row가 120만개 정도 되는 csv 파일로 테스트를 진행했다.

 

테스트 코드

# parquet test
start = timeit.default_timer() 
df = spark.read.parquet('test.parquet',header=True, inferSchema=True)
stop = timeit.default_timer()

print('parquet test time: ', stop - start)

# csv test
start = timeit.default_timer() 
df = spark.read.csv('test.csv',header=True, inferSchema=True)
stop = timeit.default_timer()

print('csv test time: ', stop - start)

 

결과

  저장 공간 읽기 속도
csv 34.03 MB 9.23 초
parquet 7.65 MB 5.93 초

결과적으로 parquet이 csv보다 저장공간을 더 적게 차지하고 읽기 속도가 훨씬 빠른 것을 알 수 있다.