기술나눔

스파크 SQL

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

스파크 SQL

1. 스파크 SQL 아키텍처

  • 기존 Hive 데이터에 직접 액세스하는 기능

  • 데이터 처리에 Spark를 사용할 수 있도록 타사 도구에 대한 JDBC/ODBC 인터페이스 제공

  • 데이터 처리를 용이하게 하기 위해 더 높은 수준의 인터페이스 제공

  • 다양한 작업 방법 지원: SQL, API 프로그래밍

    • API 프로그래밍: Spark SQL은 SQL을 기반으로 하는 SQL 문에 대한 연산자 집합을 개발했습니다. 이름은 표준 SQL 문과 유사합니다.
  • Parquet, CSV, JSON, RDBMS, Hive, HBase 등과 같은 여러 외부 데이터 소스를 지원합니다. (다양한 데이터 판독 방법을 마스터하세요)
    여기에 이미지 설명을 삽입하세요.

  • 스파크 SQL 코어: 예RDD 스키마(연산자 테이블 구조) 작업을 용이하게 하기 위해RDD 스키마발행자데이터 프레임

  • 데이터 백피드: 처리 및 정리된 데이터를 후속 분석 및 사용을 위해 Hive에 다시 쓰는 데 사용됩니다.

  • BI 도구: 주로 데이터 프레젠테이션에 사용됩니다.

  • Spark 애플리케이션: 개발자는 Spark 애플리케이션을 사용하여 데이터 처리 및 분석 논리를 작성합니다. 이러한 애플리케이션은 Python, Scala, Java 등과 같은 다양한 프로그래밍 언어로 작성할 수 있습니다.

2. Spark SQL 작동 원리

여기에 이미지 설명을 삽입하세요.

  • 촉매 최적화 프로그램 실행 프로세스:
  1. 프런트엔드
    • 입력하다: 사용자는 SQL 쿼리나 DataFrame API를 통해 데이터 처리 로직을 입력할 수 있습니다.
    • Unresolved Logical Plan(미해결 논리적 계획): 입력 SQL 쿼리 또는 DataFrame 변환 작업은 먼저 구문 분석되지 않은 논리적 계획으로 변환됩니다. 이 계획에는 사용자가 요청한 모든 작업이 포함되어 있지만 테이블 이름과 열 이름은 아직 구문 분석되지 않았을 수 있습니다.
  2. 촉매 최적화 (Catalyst Optimizer) Catalyst 옵티마이저는 Spark SQL의 핵심 구성 요소로 논리적 계획을 물리적 실행 계획으로 변환하고 최적화하는 역할을 합니다. Catalyst 최적화 프로그램은 다음 단계로 구성됩니다.
    • 분석 : 해결되지 않은 논리적 계획의 테이블 이름과 열 이름을 특정 메타데이터로 구문 분석합니다. 이 단계는 카탈로그(메타데이터 저장소)에 의존합니다. 출력은 구문 분석된 논리적 계획입니다.
    • 논리적 최적화 : 투영 전단, 필터 푸시다운 등 구문 분석된 논리 계획에 대해 다양한 최적화를 수행합니다. 최적화된 논리적 계획이 더 효율적입니다.
    • 신체 계획 : 최적화된 논리적 계획을 하나 이상의 물리적 실행 계획으로 변환합니다. 각 물리적 계획은 가능한 실행 방법을 나타냅니다.
    • 비용 모델: 다양한 물리적 계획의 실행 비용을 평가하고 비용이 가장 낮은 물리적 계획을 최종 물리적 계획으로 선택합니다.
  3. 백엔드
    • 코드 생성 : 선택한 물리적 계획을 Spark에서 실행할 수 있는 RDD 작업으로 변환합니다. 이 단계에서는 실제 실행 코드를 생성합니다.
    • RDD(로드디드): 최종 생성된 RDD 연산을 실행하여 사용자가 요청한 데이터 처리 작업을 완료한다.
  • Spark SQL의 SQL 쿼리 최적화 프로세스
SELECT name FROM(
  SELECT id, name FROM people
) p
WHERE p.id = 1