[데이터 엔지니어링 데브코스 4기] 12주차 12/3 TIL
·
데이터 엔지니어링 데브코스
안녕하세요!! 김줘입니다!! 오늘은 특별한 일 없이 Spark에 대한 강의 중심으로 이루어졌습니다! 아쉬운 점은 Spark EMR 실습 시 클러스터 비용이 높은 것을 실습 과제로 내주어서, 따라하기 부담이 되었던 점 입니다...AWS 지원이 최종 프로젝트에만 지원되는 만큼 수강생이 부담없이 할 수 있는 과제, 실습으로 구성이 되었으면 좋겠습니다..! ML에 대한 예제 실습도 2가지 강의가 진행되었는데,설명과 예제가 포스팅하기에 미흡하다고 생각되어, 제외하고 Spark EMR에 대한 포스팅만 진행했습니다!! 해당 내용은 아래 포스팅에서 확인하실 수 있습니다! 2024.12.03 - [데이터/Spark] - [Spark] 8. Spark with AWS 그리고 Spark를 Standalone으로 실행시켰을 ..
[Spark] 8. Spark with AWS
·
데이터/Spark
Spark with AWSAWS에서 Spark를 실행하기 위해서는 *EMR(Elastic MapReduce) 위에서 실행하는 것이 일반적*EMR?AWS의 Hadoop 서비스Hadoop(Yarn), Spark, Hive, Notebook 등이 설치되어 제공되는 서비스EC2 서버들을 worker node로 사용하고 S3를 HDFS로 사용AWS 내의 다른 서비스와 연동이 쉽다!Spark on EMRAWS의 EMR 클러스터 생성EMR 생성 시 Spark를 소프트웨어로 선택생성 방법EMR 클러스터 생성EMR 콘솔로 이동 및 Create Cluster 선택Cluster Name 지정소프트웨어 구성Spark가 포함된 EMR 릴리즈 선택Spark 및 필요 애플리케이션이 포함된 애플리케이션 선택하드웨어 구성Master ..
[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특..