Dataset
- Java, Scala 언어에서 지원하며 정적 데이터 타입에 맞는 코드를 지원하기 위한 Spark 의 구조적 API이다.
- Dataset API는 타입 안정성을 지원하므로 초기화에 사용한 class 대신 다른 class로 접근할 수 없다.
ex. Dataset[Person]
구조적 스트리밍
- 스트림 처리용 고수준 API
- 구조적 스트리밍을 사용하면 구조적 API 로 개발된 배치 모드의 연산을 스트리밍 방식으로 실행할 수 있음.
- 데이터를 읽을 때 read 대신 readStream method 를 사용
- maxFiledsPerTrigger 옵션을 추가로 지정
우선 staticDataFrame 을 기존의 csv 파일들을 읽어서 생성한다.
구조적 스트리밍으로 실행하는 예시는 다음과 같다. readStream 을 사용하며, schema 는 staticDataFrame 의 schema 를 재활용한다. maxFilePerTrigger 옵션은 한번에 읽는 파일 수를 정한다.
DataFrame이 Streaming 유형인지 확인한다.
CustomerId로 Group By 를 한 것에 대해 각각의 customer 가 소비한 total_cost 를 집계하는 코드이다. 이 연산 또한 지연 연산이므로 스트리밍 액션을 호출해야 한다
다음의 코드는 인메모리 테이블에 "customer_purchases" 라는 이름의 테이블로 저장한다는 의미이다. "complete" 라는 outputMode는 모든 카운트 수행 결과를 테이블에 저장한다. Spark 는 이전 집계 값보다 더 큰 값이 발생한 경우에만 인메모리 테이블을 갱신한다.
query 실행 결과가 어떤 형태로 customer_purchases 테이블에 기록되는지 확인 할 수 있다.
'Data Engineering > Apache Spark' 카테고리의 다른 글
[Spark] 스파크 완벽 가이드 Ch09. 데이터 소스 (0) | 2023.11.27 |
---|---|
[Spark] 스파크 완벽 가이드 04 - Ch 04. 구조적 API 개요 (0) | 2023.11.07 |
[Spark] 스파크 완벽 가이드 (2) - Ch 02. 스파크 간단히 살펴보기 (1) | 2023.10.29 |
[Spark] 스파크 완벽 가이드 (1) - Ch 01. 아파치 스파크란 (0) | 2023.10.29 |
[Spark] Spark RDD(Resilient Distributed Data) ? (0) | 2023.05.23 |