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