Spark SQL&Dataframe

이상억·2024년 7월 11일

Spark

목록 보기
2/5

Apache Spark SQL: Spark에서 구조적 데이터 처리

Apache Spark SQL은 Apache Spark 내에서 구조적 데이터를 처리하고 쿼리할 수 있도록 하는 모듈

구조적 데이터란?

  • 구조적 데이터는 일관되고 조직적인 형식을 따르는 데이터로, 테이블에 저장할 수 있고 SQL을 사용하여 쿼리할 수 있다.
  • 예를 들어, 관계형 데이터베이스, 스프레드시트, CSV 파일 등에 저장된 데이터가 이에 해당

데이터프레임 (DataFrame)

  • 데이터프레임은 기존의 RDD에서 확장된 개념으로, 구조적 데이터를 다루는 데 사용되는 객체

  • 데이터프레임의 주요 특징:

    • SQL 쿼리 사용 가능: 데이터프레임을 SQL처럼 쿼리할 수 있다
    • 스키마를 가질 수 있음: 데이터프레임은 스키마를 정의하여 각 컬럼의 데이터 타입을 지정할 수 있다
    • 다양한 포맷 지원: JSON, CSV, Hive, Avro, Parquet, ORC 등의 형식으로 데이터를 읽고 쓸 수 있다
    • 연결성: JDBC/ODBC와 연결 가능하며, Tableau와 같은 BI 도구와도 연동이 가능

통합성 (Integrated)

  • Spark Session: Spark Session을 통해 SQL을 사용하여 데이터프레임을 생성, 관리, 쿼리할 수 있다. 이는 기존의 SparkContext를 대체하는 역할을 함
  • Spark Session은 여러 데이터 소스를 통합적으로 관리하고, 애플리케이션 전반에 걸쳐 일관된 환경을 제공함.

Uniform Data Access

다양한 데이터 소스에 접근할 수 있습니다. 예를 들어, 파일 시스템, HDFS, S3, 데이터베이스 등 여러 소스에서 데이터를 읽고 쓸 수 있습니다.
이를 통해 다양한 데이터셋을 하나의 통합된 인터페이스로 다룰 수 있습니다.

Hive 통합 (Hive Integration)

  • Hive와의 긴밀한 통합을 통해 Hive 메타스토어를 사용할 수 있다.
  • HiveQL을 그대로 사용할 수 있으며, 기존 Hive 테이블에 대해 쿼리를 실행할 수 있다.
  • Hive UDF(사용자 정의 함수)도 사용할 수 있다.

표준 연결성 (Standard Connectivity)

  • 다양한 BI 도구와의 연결성을 제공하여, BI 도구에서 직접 쿼리를 실행할 수 있다.
  • 이를 통해 사용자는 데이터에 더 쉽게 접근하고, 분석할 수 있다.

산업 동향 (Industry Trend)

  • RDD보다는 데이터프레임이나 Spark SQL을 사용하여 데이터를 처리하는 경향이 많아졌다.
  • 이는 데이터프레임이 더 높은 수준의 추상화를 제공하고, 최적화된 쿼리 실행 계획을 통해 성능을 향상시킬 수 있기 때문.
  • Spark SQL의 성능 향상과 사용 편의성 덕분에 데이터 분석과 처리에 많이 사용.

추가 기능 및 장점

  • Catalyst Optimizer: Spark SQL의 핵심 컴포넌트로, 쿼리 최적화를 수행하여 성능을 극대화
  • Tungsten Execution Engine: 물리적 실행 계획을 최적화하고, CPU와 메모리 효율을 극대화
  • 통합 API: SQL뿐만 아니라 DataFrame과 Dataset API를 제공하여, 다양한 언어(Python, Scala, Java, R)에서 사용 가능
  • 고급 분석 기능: MLlib과 통합되어 머신 러닝 모델을 쉽게 구축하고 배포할 수 있다.
    실시간 데이터 처리: Structured Streaming을 통해 실시간 데이터 스트림을 처리할 수 있다.
profile
이상억

0개의 댓글