[Spark] 7. Partitioning & Bucketing
·
데이터/Spark
Partitioning & BucketingSpark와 같은 분산 데이터 처리 시스템에서 데이터를 분할하는 개념데이터의 분산 저장 및 쿼리 성능 최적화에서 중요한 역할Partitioning데이터를 물리적으로 여러 파티션에 나누어 저장하는 방식Spark에서 파티션은 데이터가 클러스터의 여러 노드에 분산되어 처리되는 기본 단위일반적으로 연산 최적화와 병렬 처리를 위해 사용됨특징파티셔닝 기준 : 데이터를 특정 컬럼을 기준으로 나눔 -> 적절한 cardinality를 갖는 컬럼자동 또는 수동 설정repartition()이나 coalesce()같은 함수를 통해 파티션 수를 설정하거나 변경 가능데이터를 특정 컬럼에 맞게 파티셔닝 하려면 partitionBy()를 사용사용 목적데이터가 커질 때 병렬 처리 성능을 개선..
[Spark] 6. Spark Execution Plan
·
데이터/Spark
Spark 실행 계획Apache Spark는 분산 데이터 처리 엔진으로, 쿼리를 최적화하고 실행하기 위해 여러 단계를 거침그렇기에 Spark에서 작업이 어떻게 실행되는지 이해하는 것은 성능 최적화에 매우 중요!!Transformation vs. ActionTransform기존 데이터를 기반으로 새로운 데이터를 정의하는 연산지연 실행(Lazy Execution) 방식으로 동작 -> 실제 계산은 Action이 호출될 때까지 실행 X지연 실행을 통해 실행 계획 최적화 가능종류Narrow Dependencies : 다른 파티션의 데이터를 필요로 하지 않고, 각 파티션에서 독립적으로 작업을 수행할 수 있는 연산예시selectfiltermapWide Dependnecies : 여러 파티션에서 데이터를 가져와야 하며..
[Spark] 4. Database & Table
·
데이터/Spark
Spark에서의 데이터베이스 & 테이블 관리CatalogSpark에서 테이블과 뷰에 대한 메타데이터를 관리하는 시스템메모리 기반 카탈로그 : Spark 세션이 끝나면 메타데이터가 사라짐Hive와 호환되는 카탈로그 : Persistent 카탈로그로, 세션 종료 후에도 테이블, 뷰 유지테이블 관리 방식테이블은 데이터베이스라는 폴더와 같은 구조로 관리2단계 구조 : 데이터베이스 -> 테이블테이블 유형메모리 기반 테이블/뷰임시 테이블로, 세션 중에만 유효세션 종료시 사라짐예시# 메모리 기반 임시 테이블 생성 예시data = [(1, 'Alice'), (2, 'Bob')]df = spark.createDataFrame(data, ['id', 'name'])# DataFrame을 메모리 기반 테이블로 등록df.cr..