Spark PartitionSalting을 통한 Data Skew 처리AQE가 등장하기 전 Data Skew 처리 방식 중 하나인 Salting에 대해 알아보자.Partition 관련 환경 변수 (3.3.1)spark.sql.shuffle.partitions클러스터 차원과 처리 데이터의 크기를 고려하여 Job마다 바꿔 설정큰 데이터를 처리한다면, 클러스터 전체 코어의 수로 설정AQE를 사용하는 관점에서는 조금 더 크게 설정하는 것이 좋음 (coalescing)SaltingSkew Partition을 처리하기 위한 테크닉AQE의 등장으로 인해 많이 쓰이지 않지만, AQE만으로 이슈가 사라지지 않는다면 필요할 수 있음랜덤 필드를 만들고, 그 기준으로 Partition을 새로 만들어 처리Aggregation ..
Spark Shuffling 최적화Repartition and CoalesceRepartition을 하는 이유전체적으로 파티션의 수를 늘려 병렬성 증대굉장히 큰 Partition이나 Skew Partition의 크기를 조절파티션을 분석 패턴에 맞게 재분배 (Write once, read many)어떤 DataFrame을 특정 컬럼을 기준으로 그루핑 하거나 필터링을 자주 하는 경우미리 그 컬럼을 기준으로 저장해 두었다면, 그것이 BucketingRepartition 방식두 가지 방식 존재repartition (Hash)repartitionByRange (value 기준)주의할 점Shuffling 발생 : Repartition이 별 이유 없이 사용되면 오히려 시간과 비용 증가Column이 사용되면 균등한 파..
Spark 기타 기능과 메모리 관리Spark 기타 기능Broadcast Variable룩업 테이블 등을 브로드캐스팅하여 셔플링을 막는 방식으로 사용브로드캐스트 조인에서 사용되는 것과 동일한 테크닉대부분 룩업 테이블 (혹은 디멘션 테이블)을 Executor로 전송하는 데 사용spark.sparkContext.broadcast 사용ClosureSerialization이 Task 단위로 일어남UDF 안에서 파이썬 데이터 구조를 사용하는 경우BroadcastSerialization이 Worker Node 단위로 일어남UDF 안에서 브로드캐스트 된 데이터 구조를 사용하는 경우Broadcast 데이터 셋의 특징Worker Node로 공유되는 변경 불가 데이터 (Immutable)Worker Node 별로 한 번 ..
[TIL - 72일 차] 음식 배달에 걸리는 시간 예측하기 (1)오늘 강의는 "선형대수 기초"이지만, 이미 대학교에서 강의를 수강하기도 했고 수식이 많아 모두 정리하기에 무리가 있어 학습은 영상으로만 진행하였다. 대신에 머신러닝 과제인 "음식 배달에sanseo.tistory.com이전에 문제 이해와 데이터 전처리, 하이퍼 파라미터 튜닝 코드까지 작성해 보았다. 그러나 학습 시간이 생각보다 오래 걸려 KFold를 사용하지 않은 방법으로 사용해보려고 한다. 또한 테스트 데이터의 예측과 under_prediction의 비율도 확인해 보자.음식 배달에 걸리는 시간 예측하기진행 과정하이퍼 파라미터 튜닝KFold (교차 검증) 부분을 삭제하고 train_test_split 사용실행 결과최소 rmse : 729.44..