반응형 Data Platform66 case class와 companion object 그리고 case object 아직 소스를 제대로 보진 못했지만case class와 companion object이 친구들이 매우 핵심적인 역할을 하는것 같습니다.일단 두 친구들의 역할과 특징에 대해서 알아보겠습니다.역할 분리와 관심사의 분리case class는 주로 데이터를 담는 “모델” 역할을 합니다.불변성을 유지하고, equals, hashCode, toString과 패턴 매칭에 유용한 unapply 메소드를 자동으로 생성 합니다.companion object는 그 case class와 관련된 부가 기능(예: 팩토리 메소드, 유틸리티 함수, 상수 등)을 제공 합니다.이를 통해 인스턴스 생성 방식이나 초기화 로직을 캡슐화할 수 있습니다.자동 코드 생성case class를 선언하면, 컴파일러가 companion object 안에 기.. 2025. 3. 31. companion class와 companion object이 차이점은? companion obejct만 알고 있었는데 갑자기 companion class라는게 나와서..갑자기 머릿속에서 헷깔림이라는게 찾아왔습니다..;;우선! 스칼라에서 헷깔리만한 친구들을 정리해보자!용어 정리용어정의class일반 클래스, 인스턴스를 직접 만들 수 있음case class데이터 중심 클래스, 불변성과 편의 기능 자동 제공companion classcompanion object랑 짝인 class (클래스 이름이 동일)companion object와 이름이 같고, 같은 파일에 있는 클래스object싱글톤 객체, 인스턴스 없음, 전역 유틸/설정 용companion objectclass랑 같은 이름, 같은 파일에 있는 objectapply, unapplyobject에 정의되는 팩토리/패턴 매칭 기능*.. 2025. 3. 31. Akka에서 Actor 생성 시 금지하는 방식 Akka를 살펴보고 있는데 아래의 Props방식에서 new 연산자로 객체를 만들어서 만드는 방식을 금하고 있었다.// NOT RECOMMENDED within another actor:// encourages to close over enclosing classval props7 = Props(new MyActor)이 방식은 다른 Actor 내부에서 사용하는 것을 권장하지 않는다.이유는 Props 객체가 직렬화가 불가능Actor의 캡슐화 원칙이 깨질수 있음.예를 들어서 아래의 소스에서 new MyActor를 인자로 넣었다고 했을 때class ParentActor extends Actor { val someState = "important info" def receive = { case "spaw.. 2025. 3. 27. Akka Classic 뽀개기_Overview Akka Classic은 크게 4가지 입니다.해당 4가지를 조금 디테일하게 보면 아래와 같습니다.우선 Akka의 가장 핵심인 Actors에 대해서 알아보겠습니다.DependencyClassic ActorsClassic SupervisionClassic Fault ToleranceClassic DispatchersClassic MailboxesClassic RoutingClassic FSMClassic PersistenceTesting Classic Actorslanguage는 Scala로 진행!!우선은 가장 간단한 디펜던시 설정 입니다.DependencyThe Akka dependencies are available from Akka’s library repository. To access them th.. 2025. 3. 26. Akka Classic Akka를 학습하려고보니..버전에 따라 2가지가 있었습니다.Akka Classic과 Akka Typed 입니다.현재 회사에서는 Classic을 사용하고 있습니다.참고 : https://doc.akka.io/libraries/akka-core/current/index-classic.htmlAkka Classic은 원래의 액터 API(기존 방식)를 말합니다.즉, Akka가 처음부터 제공하던 액터 시스템 방식이 “클래식”이라고 불립니다.이 기존 API는 더 타입 안전하고, 가이드가 잘 되어 있는 새로운 액터 API로 개선되었습니다.Akka Typed처럼 컴파일 타임에 타입 체크가 가능한 방식으로 발전했습니다.Akka Classic도 여전히 완전히 지원되며, 기존 애플리케이션은 계속 이 클래식 API를 사용할 .. 2025. 3. 25. Akka HelloWorld Introduction to Actors이번 시간에는 Helloworld 프로젝트를 통해서 actor APIs를 살펴보고 동작을 체크 합니다.Module inforesolvers += "Akka library repository".at("https://repo.akka.io/maven")val AkkaVersion = "2.10.2"libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor-typed" % AkkaVersion, "com.typesafe.akka" %% "akka-actor-testkit-typed" % AkkaVersion % Test)아래는 실제 프로젝트의 build.sbt의 내용Akka ActorsActor Model은 동.. 2025. 3. 24. Scala를 처음 접하는 초보자를 위한 입문 가이드_01 스칼라 스터디guide doc : https://docs.scala-lang.org/tour/tour-of-scala.htmlscope : Introduction, Basic, Unified Types, Classes IntroductionScala란 무엇인가?Scala는 모던한 다중 패러다임 프로그래밍 언어로,일반적인 프로그래밍 패턴을 간결하고 우아하며, 타입 안정성(type-safe)을 유지하면서 표현할 수 있도록 설계되었습니다.Scala는 객체지향(Object-Oriented)과 함수형(Functional) 프로그래밍의 장점을 결합한 언어입니다.Scala는 객체지향 언어다Scala는 완전한 객체지향 언어입니다.• 모든 값이 객체이며,• 객체의 타입과 동작(behavior)은 클래스(Class)와 트.. 2025. 3. 21. 2) Apache HBase® Architecture HBase의 전체적인 구성요소들이 뭐가 있는지 아키텍처를 살펴보고 세부적으로 가이드문서를 통해 알아보도록 하겠습니다1. HBase 아키텍처 (HBase Architecture)설계 개념 (Design Idea)HBase는 분산 데이터베이스(Distributed Database)이며,클러스터 관리를 위해 ZooKeeper를 사용하고, HDFS를 기본 스토리지로 활용함.HBase 주요 구성 요소HMaster- Zookeeper에 의해 리더(Leader)로 선출됨- 클러스터 관리 및 메타데이터 관리 역할 수행HRegionServer (다수의 서버가 존재) - 데이터의 실제 저장 및 읽기/쓰기 요청 처리 - 각 RegionServer는 여러 개의 Region을 관리아래 그림에서는 HBase의 기본적인 구조를 나.. 2025. 3. 13. 1) Apache HBase® Architecture : Overview Apache HBase란?Apache HBase®는 Hadoop 데이터베이스로, 분산형이며 확장 가능한 빅데이터 저장소입니다.Apache HBase는 빅데이터에 대한 랜덤(random)하고 실시간(real-time) 읽기/쓰기 접근이 필요할 때 사용됩니다.이 프로젝트의 목표는 수십억 개의 행(row)과 수백만 개의 열(column)로 이루어진 매우 큰 테이블을일반적인 하드웨어(cluster of commodity hardware) 위에서 호스팅하는 것입니다.Apache HBase는 오픈소스 분산 버전 관리 비관계형 데이터베이스로,Google의 Bigtable을 모델로 개발되었습니다.(Bigtable: A Distributed Storage System for Structured Data, Chang et.. 2025. 3. 6. 2주차) 백엔드 개발자의 데이터플랫폼 온보딩! 2주차에 한 일서비스 가이드 정리 및 사용해보기 진행생각보다 봐야할께 많았다...그리고 정리를 하면서 전체적으로 다 따라하지는 못했다.디테일한 서비스 사용은 나중에 소스를 보면서 좀 더 deep하게 보자!한번 보고 한번 정리했다고해서 내것이 아니다. 생각나지 않을때마다 자꾸 보자! 2월이 지나갔다.3월부터는 스터디를 통해 학습하자!물론 나는 더 학습해보고 스터디 이외에도 관심을 가져야 한다.데이터플랫폼 관련 책을 하나 샀다.내용이 괜찮아서 샀는데 조금씩 보자!온보딩 3주차부터는 이제 기술 도메인이다.Scala, Hadoop, HBase, Kafka등 굵직한것부터 보자!3월1일~3일까지 조금이라도 학습해보자! 2025. 3. 1. 1주차) 백엔드 개발자의 데이터플랫폼 온보딩! 목표 생소한 비즈니스 도메인 파악! 1주차에 한 일2025.02.17 - [Data Platform/Backend to DataPlatform] - 백엔드 개발자가 데이터 플랫폼 팀으로 이동하면?2025.02.17 - [Data Platform/Backend to DataPlatform] - 데이터 플랫폼에서 데이터는 어떻게 흘러갈까?비즈니스 도메인 파악을 위해 업무 wiki 정리Sercie 사용해보기 wiki 정리마지막 Working Time!!Service 이용해보기!!ㄴ 서비스 이용해보기는 다음주 화요일까지 정리 마무리! 와..서비스 가이드문서를 보고 있는데 범위가 많다..ㅋㅋㅋㅋ이번주까지 정리!!!Next Plan기술 도메인 익히기!! 3월초 스칼라 스터디 진행! → 자바언어에서 스칼라언어 적응.. 2025. 2. 21. 데이터 플랫폼에서 데이터는 어떻게 흘러갈까? 데이터플랫폼이란?데이터의 수집, 스토리지, 정리, 변환, 분석 및 거버넌스를 가능하게 하는 기술 솔루션데이터플랫폼에는 하드웨어와 소프트웨어 구성요소가 모두 포함 될수 있음조직은 데이터를 좀 더 쉽게 사용하여 의사결정 및 운영을 개선할 수 있음데이터플랫폼의 유형엔터프라이즈 데이터플랫폼(EDP)빅데이터 플랫폼(BDP)클라우드 데이터 플랫폼(CDP)고객 데이터 플랫폼(CDP)데이터가 어떻게 흘러가는지 이해하기Data Platform Architecture효과적인 데이터 관리를 구성하는 5가지 주요 계층1) Data Ingestion Layer(데이터 수집)2) Data Storage Layer(데이터 저장)3) Data Processing Layer(데이터 처리)4) User Interface Layer(사용.. 2025. 2. 17. 백엔드 개발자가 데이터 플랫폼 팀으로 이동하면? 첫번째, 마음가짐처음은 다 어렵다 아직 익숙치 않아서 어렵다.설레임 반 두려움 반 그러나 금방 적응할 것이다.빠른 빌드업을 통해 내껄로 만들자! ㅈㄴ 재밌다!!! 두번째, 비즈니스, 기술 도메인 파악!여기서 도메인이란 특정한 업무영역(비즈니스 도메인)과 기술영역(기술 도메인)을 의미비즈니스 도메인 : 특정산업이나 업무분야를 의미하며 고객에게 제공하는 서비스를 의미 함.예) 이마트는 유통서비스를 제공, KT는 통신 서비스를 제공, 토스뱅크는 은행 서비스를 제공검색서비스 안에 하위 도메인으로 보면 웹 서비스 제공 → 데이터플랫폼 서비스 제공기술 도메인기존 : Spring Boot 기반 웹 API 개발 → 웹 서비스 중심지식그래프를 구축하고 이를 기반으로 데이터를 서빙검색 성능 최적화 및 연관성 높은 결과 제.. 2025. 2. 17. 알아두면 좋은 Kafka 이모저모 :) Kafka란?데이터파이프라인 구축에서 꼭 들어가는 친구 입니다.그런데 아직 경험해보지 못했습니다...!!경험할 기회가 있다면...꼭! 경험해보고 싶습니다:)그 날을 위해 Study~!! GoGo!어색한 용어들과 개념들부터 정리해보도록 합니다.우선 데이터 파이프라인(Data Pipeline)이란?데이터의 흐름을 자동화하는 프로세스를 의미합니다.다양한 출처에서 데이터를 수집하고 변환하고 처리한 후에 저장하거나 분석 도구에 전달하는 일련의 단계를 포함 합니다.데이터 파이프라인의 유형은배치 처리와 실시간 처리가 있습니다.요 근래에 Airflow라는 친구를 알게 되었는데 데이터 파이프라인 도구 중 하나 입니다.또한 kafka 역시 실시간 스트리밍 데이터 처리를 위한 데이터 파이프라인 도구 중 하나 입니다.그런데 .. 2024. 9. 16. Hadoop을 학습해보자 ㅋㅋ Hadoop은?Hadoop은 Big Data를 처리하고 분석하는데 사용되는 OpenSource Software Framework 입니다.저렴한 하드웨어로 구성된 분산 시스템에서 페타바이트 규모의 데이터를 처리 할 수 있도록 설계data를 분석 할 때 나눠서 분석하고 합치면 되므로 빠르다.저장된 데이터를 변경하는 것이 불가능하고, 실시간 데이터와 같은 신속한 작업에서는 부적합하다.Hadoop 구성요소HDFS(Hadoop Distributed File System)Hadoop 분산 파일 시스템데이터를 저장하는 분산형 file system으로 실시간처리보다는 배치처리 목적으로 설계 → 작업량이 작거나 빠른 데이터 응답이 필요한 작업에는 적합하지 않음데이터를 여러 노드에 분산저장하여 처리 속도를 높입니다.Nam.. 2024. 7. 9. Hadoop이란? 구성요소? 용어? 요즘은 AI의 시대가 되었지만 10년전만 해도 빅데이터 열풍이 불었었다.당시 사내에서 해주는 하둡교육을 들었었는데 지금은 1도 기억이 나지 않는다 하하;;2013.06.04 - [BigDATA/Hadoop] - [하둡교육 2일차] Hadoop 설치2013.06.05 - [BigDATA/Hadoop] - [하둡교육 3일차] Zookeeper2013.06.05 - [BigDATA/Hadoop] - [하둡교육 3일차] Pig그나마 블로그에 끄적인 내용 덕분에 살포시 기억이 난다 ㅎㅎ여차저차해서 하둡을 다시 공부해보려고 한다.오늘은 용어를 익혀보자! 하둡(Hadoop) : hadoop은 대용량 데이터를 분산처리 할 수 있는 자바 기반의 오픈소스 프레임워크 입니다.HDFS(Hadoop Distributed Fil.. 2024. 7. 2. spark_study) AggregateByKey TEST AggregateByKey https://www.projectpro.io/recipes/explain-aggregatebykey-spark-scala 위의 링크를 통해 개념을 살펴보고 아래처럼 작성해보았다. spark-shell을 사용해서 작성 /usr/local/Cellar/apache-spark/3.1.2/bin/spark-shell // Bazic aggregateByKey example in scala // Creating PairRDD studentRDD with key value pairs, Number partitions is 3 defined in parallelize method. val studentRDD = sc.parallelize(Array( ("Joseph", "Maths", 8.. 2022. 4. 7. Spark - 파티셔너(Partitioner)&셔플링(shuffling) 파티셔너에 의해 RDD 파티셔닝이 실행된다. 파티셔너는 파티션 인덱스를 RDD 엘리먼트에 할당한다. 동일 파티션에 존재하는 모든 엘리먼트는 동일한 파티션 인덱스를 가질 것이다. 스파크는 HashPartitioner와 RangePartitioner라는 두개의 파티션이 있다. (사용자 정의 파티셔너도 구현 가능!) HashPartitioner Spark의 기본 파티셔너이고, RDD 엘리먼트의 각 키에 대한 해시값을 계산한다. 동일한 해시 코드를 가진 모든 엘리먼트는 다음 코드처럼 동일 파티션을 얻는다. hashCode()를 사용해 3으로 설정된 파티션 개수를 기반으로 각 엘리먼트마다 partitionIndex를 얻을 수 있다. RangePartitioner RangePartitioner는 RDD를 거의 동일.. 2022. 3. 10. Spark - RDD? RDD(Resilient Distributed Dataset)는 불변이며, 분산 컬렉션 객체이다. 불변성 특성때문에 한번 생성된 RDD는 읽기 전용이다. 즉, 트랜스포메이션(Transformation)은 RDD에서 새로운 RDD로 생성할 수는 있지만, 원본 RDD는 생성된 후에는 결코 수정되지 않는다. 그러므로 RDD는 경쟁조건과 기타 동기화 문제에 영향을 받지 않는다! RDD는 데이터에 대한 참조만 포함하기 때문에(실제 데이터는 클러스터의 노드에 있는 파티션에 포함) RDD의 분산 특성이 동작할 수 있다. RDD는 실제로 클러스터에서 파티션으로 나워진 데이터셋이고, 파티션 데이터는 HDFS, HBase, Cassnadra, AWS S3에서 가져온 것일 수 있다. RDD는 다음과 같은 5가지 주요 속성을.. 2022. 3. 3. [Spark-Study] Day-5 인텔리제이에서 실습 2021.06.14 - [Study/Study group] - [Spark-Study] Day-1 2021.06.24 - [Study/Study group] - [Spark-Study] Day-2 2021.07.01 - [BigDATA/spark] - [Spark-Study] Day-3 2021.08.05 - [BigDATA/spark] - [Spark-Study] Day-4 관련 github : https://github.com/databricks/LearningSparkV2 챕터3의 소스를 동작하기 위해 다시 프로젝트를 생성해보았다. git clone https://github.com/databricks/LearningSparkV2.git 소스를 클론해 오고 IDE에서 오픈하였다. main소스에서는 .. 2021. 8. 12. [Spark-Study] Day-4 스파크 로컬 디버깅 2021.06.14 - [Study/Study group] - [Spark-Study] Day-1 2021.06.24 - [Study/Study group] - [Spark-Study] Day-2 2021.07.01 - [BigDATA/spark] - [Spark-Study] Day-3 spark local debugging 해보기 코드상으로는 아래의 내용이 추가 된다. val conf = new SparkConf().setAppName("MnMCount") conf.setIfMissing("spark.master", "local[*]") val spark = SparkSession .builder .config(conf) .getOrCreate() // val spark = SparkSession //.. 2021. 8. 5. 이전 1 2 3 4 다음 반응형