반응형
데이터 소스
스파크는 여섯 가지 핵심 데이터 소스와 커뮤니티에서 만든 수백 가지 외부 데이터 소스가 있다.
핵심 데이터 소스
- CSV
- JSON
- 파케이
- ORC
- JDBC/ODBC 연결
- 일반 텍스트 파일
외부 데이터 소스
- 카산드라
- HBase
- 몽고디비
- AWS Redshift (Amazon Redshift는 클라우드에서 완벽하게 관리되는 페타바이트급 데이터 웨어하우스 서비스입니다.)
- XML
- 기타 수많은 데이터소스
이중에서도 가장 먼저 알아두어야 할것은 스파크의 기본 파일 포맷인 파케이(parquet)이다.
파케이 파일
파케이란
다양한 스토리지 최적화 기술을 제공하는 오픈소스로 만들어진 컬럼 기반의 데이터 저장 방식
파케이 특징 및 장점
- 분석 워크로드에 최적화
- 저장소 공간 절약
- 전체파일 대신 개별 컬럼을 읽을 수 있음
- 컬럼 기반의 압축기능 제공
- 스파크의 기본 파일 포맷
- 읽기 연산 시 JSON이나 CSV보다 훨씬 효율적으로 동작
(따라서 장기 저장용 데이터는 파케이 포맷으로 저장하는 것이 좋음) - 복합 데이터 타입을 지원
- 컬럼이 배열, 맵, 구조체 타입이라 해도 문제없이 읽고 쓰기 가능
(단, CSV에서는 배열을 사용할 수 없음)
파케이 파일 읽기
파케이를 읽기 포맷으로 지정하는 방법: spark.read.format("parquet")
파케이는 자체 스키마를 사용해 데이터를 저장하기 때문에 별도 옵션이 거의 없음(정확한 스키마가 필요한 경우에만 스키마를 설정)
파케이 파일은 스키마가 파일 자체에 내장되어 있으므로 추정이 필요 없음(이 방법이 더 효과적)
spark.read.format("parquet")\
.load("/dat/flight-data/parquet/2010-summary.parquet").show(5)
파케이 옵션
읽기/쓰기 | 키 | 사용 가능한 값 | 기본 값 | 설명 |
ALL | compression 또는 codec | none, uncompressed, bzip2. deflate, gzip, lz4, snappy | none | 스파크가 파일을 읽고 쓸 때 사용하는 압축 코덱을 정의 |
READ | mergeSchema | true, false | spark.sql.parquet.mergeSchema 속성의 설정 값 | 동일한 테이블이나 폴더에 신규 추가된 파케이 파일에 컬럼을 점진적으로 추가가능한데, 이러한 기능을 활성화하거나 비활성화 하기 위해 이 옵션을 사용 |
2개 옵션만 존재할 정도로 잘 만들어져 있지만 호환되지 않는 파케이 파일을 다룰 때 문제가 발생할 수 있음.
파케이 파일 쓰기
파일 경로만 명시하면 되며, 분할 규칙은 다른 포맷과 동일하게 적용
cvsFile.write.format("parquet").mode("overwrite")\
save("/tmp/my-parquet-file.parquet")
반응형
'프로그래밍 > Spark' 카테고리의 다른 글
[pyspark] 스파크 완벽 가이드 - 다양한 데이터 타입 다루기 (0) | 2022.03.16 |
---|---|
[pyspark] 스파크 완벽 가이드 - 구조적 API 기본 연산 (0) | 2022.03.16 |
[pyspark] 스파크 완벽 가이드 - 구조적 API 기본개념과 용어 (0) | 2022.03.16 |