Apache Spark SQL: Spark에서 구조적 데이터 처리
Apache Spark SQL은 Apache Spark 내에서 구조적 데이터를 처리하고 쿼리할 수 있도록 하는 모듈
구조적 데이터란?
- 구조적 데이터는 일관되고 조직적인 형식을 따르는 데이터로, 테이블에 저장할 수 있고 SQL을 사용하여 쿼리할 수 있다.
- 예를 들어, 관계형 데이터베이스, 스프레드시트, CSV 파일 등에 저장된 데이터가 이에 해당
데이터프레임 (DataFrame)
통합성 (Integrated)
- Spark Session: Spark Session을 통해 SQL을 사용하여 데이터프레임을 생성, 관리, 쿼리할 수 있다. 이는 기존의 SparkContext를 대체하는 역할을 함
- Spark Session은 여러 데이터 소스를 통합적으로 관리하고, 애플리케이션 전반에 걸쳐 일관된 환경을 제공함.
다양한 데이터 소스에 접근할 수 있습니다. 예를 들어, 파일 시스템, 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을 통해 실시간 데이터 스트림을 처리할 수 있다.