데이터 엔지니어 이것저것

Spark SQL 본문

오픈소스/Spark

Spark SQL

pastime 2023. 1. 8. 16:12
728x90

Spark SQL 이란?

  • 구조화된 데이터 작업을 위한 아파치 스파크의 모듈

데이터 프레임이란?

  • 관계성 데이터 베이스
    Row 객체를 담고 있는데 이는 구조적인 정보들을 담은 것을 말하고, 스키마를 가지고 있다.
    그 방식으로 우리는 효율적으로 저장하고, 스키마와 Row가 있기에 데이터 베이스처럼 다룬다.

데이터 프레임에서 SQL 같은 방식을 하고 있다면 RDD에서보다 훨씬 더 최적화된 결과를 볼수 있다.

 

기술면에서 데이터프레임은 Row객체의 데이터 셋일 뿐이다.

중요한점은 데이터 셋은 명확한 타입을 가지고 있다.

 

이는 스크립트가 동작하는 도중에 에러를 발견하는게 아니라, 스크립트를 만들때 오류를 발견할수 있다.

 

 

데이터 셋의 단점은 모든것이 컴파일 타임에 이뤄지기에 컴파일된 언어로만 사용할 수 있다. eg) 자바, 스칼라

파이썬의 경우 데이터 프레임에 제한이 있다. 컴파일 타임 최적화를 못하기 때문이다.

 

RDD를 .toDS 데이터셋으로 변환할수도 있고, 다른 방식으로도 작업 할 수 있다.

 

RDD와 데이터 셋은 각자 상황에 따라서 사용하면 된다.

하지만 대부분의 경우 데이터셋이 더 효율적이다.

 

상호 운영성도 데이터 셋이 더 좋은데, 머신러닝 라이브러리나 스트리밍 엔진은 데이터셋을

RDD 대신 API를 주로 사용한다.

 

여기서 중요한점은 스크립트에 접근하는 방법의 구조에 차이가 있는데

Spark SQL이나 데이터 셋을 사용하려면 SparkSession이 필요하여

기존에는 SparkContext를 사용하였지만 SparkSession을 사용하게 될것이다

(쉽게 생각하면 DB 접근을 위한 세션이라고 생각하면 된다.)

 

 

또한 쿼리와 문법이 비슷하기에 빠르게 작성할수 있다.

728x90

'오픈소스 > Spark' 카테고리의 다른 글

Spark Broadcast  (0) 2023.01.30
Spark Session  (0) 2023.01.08
spark groupByKey vs reduceByKey  (0) 2022.12.05
RDD  (0) 2022.12.03
Spark란?  (1) 2022.11.23