1. 객체 지향 프로그래밍 (OOP) 1.1 클래스 (Class)Scala는 객체지향 프로그래밍을 지원하기 위해 클래스를 제공합니다. 타 언어와 비교했을 때 더 간소한 문법을 가지고 있습니다.기본적으로 Java와 같은 keyword를 사용하는 특징들이 있습니다.new를 이용한 생성extends를 이용한 상속Scala class Scala에서 클래스를 만드는 방법은 아주 간단합니다. 아래 Book 클래스에는 책 제목 title과 저자 author 가 멤버변수로 담겨져 있습니다.// 클래스 생성class Book(var title: String, var author: String)// 인스턴스 생성(클래스로부터 만들어진 각각의 객체)val myBook1 = new Book("My awesome book 1"..
1. Scala 소개2003년 스위스 로잔공대의 Martin Odersky가 개발한 강력한 타입(Storngly typed) 방식의 확장 가능한(Scalable) 프로그래밍 언어(Language)객체 지향형과 함수형 프로그래밍을 모두 지원스칼라 코드는 자바 바이트코드로 변환될 수 있음(JVM이 읽을 수 있는 자바가 컴파일된 결과인 .class 파일이 있으면 scala도 읽을 수 있음, 100% 호환은 아님)Scala는 대규모 데이터 분산 컴퓨팅 분야에 많이 사용됨 (데이터 엔지니어에게는 유요한 기술)대규모 데이터에 주로 쓰이는 만큼 대중적이고 인기가 많은 언어는 아님 2. 변수, 상수var변수 선언 (같은 타입에 한해 변경 가능)val상수 선언 (초기값 변경 불가) 변수와 상수의 이름 규칙 (Naming..
1. Spark 설치 전 참고사항Spark학습을 목적으로 한다면 로컬환경으로 구성하는 것이 좋습니다. 이유는 다음과 같습니다.로컬 설치 이유비용 없음: 로컬 머신만 있으면 별도의 클라우드 비용 없이 실습 가능구성 이해에 도움: Spark를 직접 설치하고 설정해보는 과정에서 아키텍처 이해에 큰 도움간단한 테스트에 적합: 소규모 데이터(수MB~수백MB) 기준으로 대부분의 Spark API를 충분히 학습 가능오프라인 환경에서도 실습 가능구성 방법Spark Standalone 모드로 설치Jupyter + PySpark 조합으로 실습 환경 구성 가능로컬 클러스터(Spark Local[n]) 방식으로 멀티스레드 테스트도 가능다른 구성 방법 (참고)Docker 또는 로컬 클러스터 구성Spark Master + Wor..
Spark를 사용하기 앞서 RDD라는 기본적인 데이터 구조에 대해 확실히 이해하는것이 중요합니다. 지난 포스팅에서는 RDD의 개념을 간단하게 알아보았다면 이번에는 RDD가 개발 배경과 특징에 대해 자세히 알아보겠습니다. 1. RDD란?중요한만큼 다시한번 RDD에 대해 알아봅시다.RDDRDD는 immutable한 분산된 object들의 collection이다.RDD의 각 데이터셋은 logical patition으로 나눠져있어 클러스터 내의 물리적으로 다른 컴퓨팅노드에서 처리될 수 있다.read-only의 파티션된 record의 집합이다.storage나 다른 RDD로 부터 deterministic operation(결정론적인 동작, Spark의 API)을 통해서 만들어질 수 있다.병렬로 실행될 수 있는 Fa..
RDD - 탄력적인 분산 데이터셋이란?스파크의 데이터 구조는 크게 3종류가 있습니다. - RDD (Resilient Distributed Dataset) - Dataframe - Dataset RDD는 그 중 가장 처음으로 도입된 데이터 구조로 Spark 1.0부터 도입된 가장 기초적인 데이터 구조입니다. (현재 Spark 3.0) 이름을 풀어보면 이렇게 해석이 가능하겠습니다.Resilient(탄력적인, 회복력 있는, 변하지 않는) : 메모리 내부에서 데이터가 손실 시 유실된 파티션을 재연산해 복구할 수 있음Distributed(분산된) : 스파크 클러스터를 통하여, 메모리에 분산되어 저장됨Data : 파일, 정보 등 RDD 특징 5가지1. 데이터 추상화데이터는 클러스터에 흩어져있지만 하나의 파일인것 ..
데이터 엔지니어링은 단순한 데이터 이동 이상의 일을 요구합니다. 원시 데이터를 수집하고, 이를 유용한 정보로 가공하며, 이 모든 과정을 자동화된 파이프라인으로 구축해야 합니다. 이번 글에서는 AWS를 기반으로 데이터 파이프라인 구성하는 방법, SQL 및 프로그래밍 개념을 활용해 데이터를 변환하며, 성능을 최적화하고 인프라를 자동화하는 방법을 소개합니다. 1. 데이터 파이프라인과 ETL 프로세스 이해 이전 포스팅에서는 데이터 소스의 이해부터 수집, 변환, 저장, 그리고 오케스트레이션에 이르는 ETL (Extract, Transform, Load) 과정을 살펴보았습니다. AWS에서는 이를 운영화 및 자동화하기 위한 다양한 도구를 제공합니다.AWS Glue: 서버리스 ETL 서비스로, Spark 기반 작업..