[Apache Spark] 스파크 SQL

연수·2021년 11월 30일
0

spark

목록 보기
10/26

스파크 SQL은 스파크에서 가장 중요하고 강력한 기능 중 하나이다. 스파크 SQL은 DataFrame과의 뛰어난 호환성 덕분에 다양한 기업에서 강력한 기능으로 자리매김하였다.

스파크 SQL은 하이브 메타스토어를 사용하므로 하이브와 잘 연동할 수 있다. 스파크 SQL은 하이브 메타스토어에 접속한 뒤 조회할 파일 수를 최소화하기 위해 메타데이터를 참조한다.

스파크는 자바 데이터베이스 연결(JDBC) 인터페이스를 제공한다.

쓰리프트 JDBC/ODBC 서버는 하이브 1.2.1 버전의 HiveServer2에 맞추어 구현되어 있다.

 

🐱 카탈로그

  • 스파크 SQL에서 가장 높은 추상화 단계
  • 테이블에 저장된 데이터에 대한 메타데이터 뿐만 아니라 데이터베이스, 테이블, 함수, 뷰에 대한 정보를 추상화
  • 카탈로그는 테이블, 데이터베이스, 함수를 조회하는 등 여러 가지 유용한 함수를 제공
  • 스파크 SQL을 사용하는 또 다른 방식의 프로그래밍 인터페이스

 

🏓 테이블

  • 관리형 테이블/외부 테이블
    • 메타데이터 저장
    • DataFrame의 saveAsTable 메서드는 스파크가 관련된 모든 정보를 추적할 수 있는 관리형 테이블을 만들 수 있다.
    • saveAsTable 메서드는 테이블을 읽고 데이터를 스파크 포맷으로 변환한 후 새로운 경로에 저장한다.

 

🔎 뷰

  • 기존 테이블에 여러 트랜스포메이션 작업을 지정
  • 단순 쿼리 실행 계획
  • 뷰를 사용하면 쿼리 로직을 체계화하거나 재사용하기 편하게 만들 수 있다.
  • 전역 뷰/세션별 뷰/임시뷰/일반뷰
  • 전역적 임시 뷰 → 데이터베이스에 상관 없이 사용할 수 있어 전체 스파크 애플리케이션에서 볼 수 있지만, 세션이 종료되면 뷰도 사라진다.

 

🛀 데이터베이스

  • 여러 테이블을 조직화하기 위한 도구
  • 데이터베이스를 정의하지 않으면 기본 데이터베이스를 사용
  • 스파크에서 실행하는 모든 SQL 명령문은 사용 중인 데이터베이스 범위에서 실행된다.

 

📀 복합 데이터 타입

  • 구조체
    • 맵에 가깝다.
    • 스파크에서 중첩 데이터를 생성하거나 쿼리하는 방법을 제공
    • 구조체를 만들기 위해서는 여러 컬럼이나 표현식을 괄호로 묶으면 된다.
  • 리스트

  ✔️ 함수

  • 스파크 SQL은 다양한 고급 함수를 제공
  • 스파크는 사용자 정의 함수를 정의하고 분산 환경에서 사용할 수 있는 기능을 제공

  ✔️ 서브쿼리

  • 쿼리 안에 쿼리를 지정

 


[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)

profile
DCDI

0개의 댓글