본문 바로가기

Apache Spark

(14)
[PySpark] Spark로 Encoding 과 Scaling 을 수행해보자! 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 이번 포스팅에서는 문자열 또는 Object 타입의 값을 숫자로 '인코딩' 해주는 기법들인 레이블 인코딩(Label Encoding)과 원-핫 인코딩(One-Hot Encoding)을 스파크로 수행하는 방법에 대해서 알아보도록 하자. 그리고 실수형 형태의 값들을 스케일링 해주는 방법에 대해서도 배워보자. 1. 문자열을 인덱스(숫자)로, StringToIndexer 사이킷런에 익숙한 분들은 레이블 인코딩을 수행한다고 하면 LabelEncoder 클래스나 OrdinalEncod..
[PySpark] Spark로 교차검증, 파라미터 튜닝을 해보자! 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 이번 포스팅에서는 스파크를 활용해서 모델의 교차검증을 수행하고 모델의 하이퍼파라미터를 튜닝을 함께 수행하는 방법에 대해 알아보자. 그리고 더 나아가 교차검증과 파라미터 튜닝 과정을 저번 포스팅에서 배운 Pipeline을 활용해 수행하는 방법도 알아보도록 하자. 1. 교차검증과 파라미터 튜닝을 동시에, CrossValidator 스파크의 CrossValidator 클래스는 교차검증과 파라미터 튜닝을 동시에 수행할 수 있도록 한다. 여기서 '교차검증'이란 K-fold 교차검증..
[PySpark] Spark의 Pipeline으로 분류 모델을 만들어보자! 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 이번 포스팅에서는 PySpark를 활용해서 간단한 머신러닝 분류 모델을 만들어보도록 하자. 그리고 분류 모델을 만드는 데 거치는 여러가지 과정을 하나의 파이프라인으로 만들 수 있는 PySpark의 Pipeline을 활용해보는 방법도 알아보도록 하자. 1. PySpark로 간단한 Multi-Class 분류 모델 만들기 해당 포스팅에서는 대표적인 벤치마크 데이터인 IRIS(붓꽃) 데이터를 활용한 멀티-클래스 분류 모델을 만들어보자. 우선 아래의 Scikit-learn 모듈을 ..
[PySpark] Spark의 Dataframe API를 알아보자!(2) 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 저번 포스팅에 이어 PySpark의 dataframe API 사용 방법에 대해 연이어 알아보자. 1. 조건에 맞는 데이터만 추출하기 특정 조건에 맞는 데이터를 추출하기 위해 사용하는 메소드로는 filter() 메소드가 존재한다. 이 때, filter() 메소드에는 스파크 데이터프레임의 Column Type 객체를 넣어주어야 한다. 여기서 Column Type 객체란게 잘 와닿지 않을 텐데, 우리가 저번 시간에 select() 메소드를 활용해서 특정 칼럼을 추출할 때, 아래..
[PySpark] Spark의 Dataframe API를 알아보자!(1) 🔊 해당 포스팅은 스파크 완벽 가이드 책과 인프런의 스파크 머신러닝 완벽 가이드 강의로 공부한 후 배운 내용을 저만의 방식으로 재구성한 것임을 알립니다. 특히, 참고한 인프런 강의의 강의 자료를 그대로 사용하지 않았음을 필히 알립니다! 예전에 아파치 스파크에 대한 개념글과 PySpark를 활용해서 문제 유형에 맞게 간단한 머신러닝 모델을 튜토리얼 형식으로 배웠었다. 그 이후 어느 정도 시간이 지난 후, 아파치 스파크의 버전도 많이 업데이트 되었고 개인적으로 분산 시스템에 대한 역량을 키워보고자 책과 강의를 통해 PySpark를 다시 배우고 있다. 필자는 PySpark를 활용하는 목적이 대량의 데이터를 전처리하고 머신러닝 모델을 개발하는 방법을 배워보는 것임을 알린다. 그래서 이번 첫 포스팅에서 알아볼 P..
[Infra] 데이터 인프라 - Ingestion&Transformation(Event Streaming) 🔊 해당 포스팅은 YouTube GeekNews 채널의 데이터 인프라 강의 내용에 기반해 제가 재구성하여 작성함을 알려드립니다. 이번 포스팅에서는 데이터 인프라 구조에서 주로 ETL 도구를 다루는 Ingestion & Transformation에 해당하는 또 다른 요소 중 하나인 Event Streaming에 대해 알아보려 한다. 우선 Event Streaming 이란 무엇일까? 위키백과에 따르면 정확히 Event Stream Processing이란, 이벤트 중심 정보시스템의 구축을 지원하도록 설계된 일련의 기술이라고 정의한다. 결국 실시간 스트리밍을 의미한다. 모든 데이터가 실시간 스트리밍이 필요한 것은 아니지만 금융기관이 주식의 시장 변화를 모니터링한다거나 운송차량, 농기계에 붙어있는 센서의 데이터를..
[Infra] 데이터 인프라 - Ingestion&Transformation(Spark Platform, Python Lib, Batch Query Engine) 🔊 해당 포스팅은 YouTube GeekNews 채널의 데이터 인프라 강의 내용, 하용호님의 SlideShare 슬라이드에 기반해 제가 재구성하여 작성함을 알려드립니다. 이번 포스팅에서는 저번 포스팅에서 살펴본 Ingestion & Transformation 단계의 또 다른 도구인 Apache Spark Platform에 대해 알아보려고 한다. PySpark에 대해 공식 문서를 읽고 어느정도 공부한 내용을 저번에 포스팅한 적이 있다. 그런데 역시 공식 문서만으로 이해한 것이 모든 걸 내가 다 이해한 것이 아니었다.. 그래서 2가지 매체를 통해 더 공부를 하고 정리한 내용을 포스팅하려 한다. 위 빨간색 네모칸의 요소들을 각각 소개하기 전에 이 요소들인 Spark Platform, Python Libs, B..
[Infra] 데이터 인프라 - Ingestion&Transformation 🔊 해당 포스팅은 YouTube GeekNews 채널의 데이터 인프라 강의 내용에 기반해 제가 재구성하여 작성함을 알려드립니다. 이번 포스팅에서는 저번 포스팅에서 알아본 데이터 인프라 구조의 첫 번째 구성요소 Sources에 이어 다음 단계인 Ingestion & Transformation을 알아보려 한다. Ingestion & Transformation 흔히 말하는 ETL 도구들이 이번 단계에 해당하는 것들이다. 즉, Sources 로부터 얻은 많은 데이터들을 추출, 변환하는 단계이다. 이번 포스팅에서는 위 그림에서 빨간색 네모칸 안에 있는 Connectors, Data Modeling, Workflow Manager에 대해 알아보려고 한다. 1. Connectors 위 그림에서 Connectors가 ..
[Infra] 데이터 인프라 구조와 Sources 🔊 해당 포스팅은 YouTube GeekNews 채널의 데이터 인프라 강의 내용에 기반해 제가 재구성하여 작성함을 알려드립니다. 1. 데이터 파이프라인의 필요성 데이터 파이프라인은 왜 필요할까? 크게 두 가지 이유로 볼 수 있다. 비즈니스 리더들의 의사결정 돕기 위함 서비스 또는 제품을 데이터의 도움을 받아 향상시키기 위함 데이터 파이프라인을 구성할 때 주로 데이터 ETL을 구성한다고 한다. ETL은 위와 같은 과정을 말한다. 그럼 이러한 과정을 왜 하는걸까? 데이터가 발생하는 곳들은 정말 다양하다. 따라서 발생하는 곳 마다 각 테이블을 구성한다면 테이블 간 관계도 매우 복잡해진다(Normalized Schema). 따라서 데이터가 발생하는 Production Systems에서 ETL 이라는 파이프라인을..
[PySpark] 컨텐츠 기반 영화 추천 시스템 만들어보기 🔊 본 포스팅은 PySpark를 활용한 Kaggle Notebook을 필사하면서 배우게 된 코드 내용을 기반으로 포스팅했음을 알려드립니다. 또한 앞으로 소개될 PySpark의 문법에 대해서 생소하시다면 여기를 참고해 간단한 예시를 통해 이해를 할 수 있습니다. 이번 포스팅에서는 PySpark 그 중에서도 Spark SQL 과 Spark MLlib을 활용해 잠재요인 기반의 영화 추천 시스템을 구현해보려 한다. 활용한 데이터는 Kaggle의 무비렌즈 데이터의 movies, ratings 데이터를 필자가 직접 전처리한 데이터를 활용했다. 전처리된 데이터를 활용하려면 여기를 클릭해 다운로드 받자. 추천 시스템 중에는 컨텐츠 기반 추천, 협업 기반 추천 등의 여러 종류가 있지만 여기서는 다른 사용자들의 제품에 대..
[PySpark] PySpark로 Regression 모델 만들기 🔊 본 포스팅은 PySpark를 활용한 Kaggle Notebook을 필사하면서 배우게 된 코드 내용을 기반으로 포스팅했음을 알려드립니다. 또한 앞으로 소개될 PySpark의 문법에 대해서 생소하시다면 여기를 참고해 간단한 예시를 통해 이해를 할 수 있습니다. 이번 포스팅에서는 PySpark 그 중에서도 Spark SQL 과 Spark MLlib을 활용한 머신러닝 회귀 모델을 만드는 방법에 대해 소개하려고 한다. 활용한 데이터는 California Housing 데이터를 사용했다. 데이터는 여기를 눌러 하단의 Input 목차를 보면 다운로드 받을 수 있다. 이전 포스팅에서 실습해봤던 분류 모델과 큰 프레임이 다르진 않다. 따라서 이번 포스팅에서는 수치형 변수에 주로 적용하는 기술통계량 값을 보는 방법이나..
[PySpark] 타이타닉 데이터로 분류 모델 만들기 🔊 본 포스팅은 PySpark를 활용한 Kaggle Notebook을 필사하면서 배우게 된 코드 내용을 기반으로 포스팅했음을 알려드립니다. 또한 앞으로 소개될 PySpark의 문법에 대해서 생소하시다면 여기를 참고해 간단한 예시를 통해 이해를 할 수 있습니다. 이번 포스팅에서는 PySpark 그 중에서도 Spark SQL 과 Spark MLlib을 활용한 머신러닝 분류 모델을 만드는 방법에 대해 소개하려고 한다. 활용한 데이터는 머신러닝에 입문할 때 가장 많이 사용되는 타이타닉의 Train 데이터를 사용했다. 1. 필요한 라이브러리와 데이터 로드 가장 먼저 할 일은 데이터 로드와 모델 빌딩 시 사용될 Spark SQL, Spark MLlib의 여러가지 메소드들을 임포트하자. 참고로 PySpark를 사용해..
[PySpark] Spark SQL 튜토리얼 🔊 본 포스팅은 Apache Spark 3.0.1 공식 문서를 직접 해석하여 필자가 이해한 내용으로 재구성했습니다. 혹여나 컨텐츠 중 틀린 내용이 있다면 적극적인 피드백은 환영입니다! : ) 이번 포스팅에서 다루어 볼 컨텐츠는 바로 Spark로 SQL을 이용할 수 있는 Spark SQL에 대한 내용이다. Spark는 이전 포스팅에서도 언급했다시피 기본적으로 RDD 자료구조를 갖고 있지만 Python의 Pandas 라이브러리에서 제공하는 DataFrame과 비슷한 구조의 DataFrame을 지원하고 있다.(이름도 DataFrame 으로 동일하다.) 추후에 다루겠지만 Spark는 Spark의 DataFrame을 Pandas의 DataFrame 형태로 바꾸어주는 것도 지원한다. 그럼 이제 Spark SQL을 ..
[PySpark] Apache Spark 와 RDD 자료구조 🔊 본 포스팅은 Apache Spark 3.0.1 공식 문서를 직접 해석하여 필자가 이해한 내용으로 재구성했습니다. 혹여나 컨텐츠 중 틀린 내용이 있다면 적극적인 피드백은 환영입니다! : ) 이번 포스팅에서는 대용량 데이터 병렬 처리를 위한 통합 분석 엔진인 Apache Spark와 Apache Spark의 기본 자료 구조인 RDD 자료구조에 대해 소개하려 한다. Apache Spark는 구조화된 데이터를 처리하기 위한 Spark SQL과 머신러닝을 위한 ML Lib, 그래프 처리를 위한 Graph X, 실시간 처리와 방대한 연산을 위한 Structured Streaming 도구도 제공한다. 또한 Apache Spark는 본래 Scala 언어로 만들어졌지만 Java, R, Python 등과 같은 다양한 ..