[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] 5. File Format
·
데이터/Spark
Spark File FormatCSV특징텍스트 기반의 파일 포맷데이터를 콤마로 구분장점매우 단순하고, 다른 시스템에서 쉽게 사용 가능가벼운 데이터 전송을 위해 사용단점스키마 정보가 포함되지 않아서 데이터 구조를 명확히 알 수 없음큰 데이터셋 처리 시 성능 저하예시df = spark.read.option("header", "true").csv("path/to/file.csv") JSON특징텍스트 기반의 파일 포맷키-값 쌍의 형태로 데이터 저장데이터 계층 구조 지원장점유연한 데이터 구조 지원다른 시스템과 쉽게 호환단점대량의 데이터에 대해 성능 좋지 않음 (텍스트로 저장되기에 크기 증가)스키마 정보 명시적으로 제공 X예시df = spark.read.json("path/to/file.json") Parquet특..