본문 바로가기
728x90

분류 전체보기331

[Scala] 스칼라 배우기 4. 스칼라 기본 문법3(클래스) 클래스(class) 클래스는 class를 이용하여 생성 // 클래스 선언 class Person(name:String, age:Int) // 클래스 생성 val p = new Person("David", 30) // 멤버 변수 생략 가능 class A 클래스 멤버 변수 가변 변수는 컴파일러가 클래스 내부에 자동으로 getter, setter 메소드를 생성 가변 변수로 선언된 값은 읽고, 쓰는 것이 가능 불변 변수는 컴파일러가 getter만 생성,. 불변 변수로 선언된 값은 읽는 것만 가능 가변 변수, 불변 변수로 선언되지 않은 변수는 getter, setter 가 생성되지 않기 때문에 클래스 내부에서만 사용할 수 있음 // 기본형 class Animal(name: String) { println(s"${.. 2023. 5. 23.
[Scala] 스칼라 배우기 3. 스칼라 기본 문법2(함수) 함수(function) def으로 선언 함수를 선언할 때 리턴문과 리턴 타입은 생략이 가능하고, 매개변수의 파라미터 타입은 생략할 수 없음 리턴값이 없는 함수를 선언할 때는 Unit을 이용 함수의 매개변수는 불변 변수이기 때문에 재할당 할 수 없음 리턴 타입을 생략하면 컴파일러가 반환값을 이용하여 자동으로 추론 리턴문이 생략되고, 리턴 타입이 Unit이 아니면 함수의 마지막 값을 리턴 // 함수 선언 def add(x: Int, y: Int): Int = { return x + y } // x는 val 이기 때문에 변경 불가 def add(x: Int): Int = { x = 10 } // 리턴 타입 생략 가능 def add(x: Int, y: Double) = { x + y } // 리턴 타입이 Uni.. 2023. 5. 22.
[Scala] 스칼라 배우기 2. 스칼라 기본 문법1(진입점, 객체, 자료형, 문자열, 변수) Scala의 진입점 싱글톤 객체(object)가 main 함수를 구현하는 방법 // main 함수를 생성App 을 상속하여 실행하는 방법 object S01_HelloWorldObject { def main(args: Array[String]): Unit = { println("Hello World main") } } 싱글톤 객체(object)가 App 트레잇을 상속하는 방법 App 트레잇을 상속하는 방법은 extends로 App 트레잇을 상속하고, 실행하고자 하는 코드를 작성하면 순차적으로 실행 object S01_HelloWorld extends App { println("Hello World") } App 트레잇이 내부적으로 main() 함수를 구현해 주기 때문에, 첫번째 방법과 동작 방식의 차이는.. 2023. 5. 14.
[Scala] 스칼라 배우기 1. 스칼라란? 특징 및 스칼라 언어에 관한 통계 이번에 이직을 하게 되면서 스파크 코드가 python이 아닌 scala로 구성되어 있기 때문에 스칼라 언어를 배울 필요성을 느껴 스칼라언어에 대해 하나씩 배우면서 적용해 나갈 계획입니다. java와 닮은 점이 많은 언어 이기 때문에 java와 비교하며 같이 공부 해 나갈 계획이고 scala를 통해 spark프로그래밍도 적용 및 pyspark와 비교 해 볼 계획입니다. 1. Scala란? 2004년 마틴 오더스키(Martin Odersky)가 발표 일반적인 프로그래밍 패턴을 간결하고 우아하며 타입-세이프한 방식으로 표현할 수 있게 설계된 최신 멀티-패러다임 프로그래밍 언어 객체지향과 함수형 언어의 특징을 자연스럽게 통합한 언어(하이브리드 언어) 2. Scala 특징 1. 모든 값이 객체인 순수 객체지향 언.. 2023. 5. 13.
첫 번째 이직, 그리고 데이터 엔지니어 2021년 1월1일 부터 시작된 내 첫 직장 생활이 2023년 5월4일 부로 끝을 맺었다. 약 2년 4개월간의 여정 속에는 3개의 프로젝트가 함께 했었는데, 데이터업계의 컨설턴트로써 cloud migration, DA, 품질 및 솔루션 운영과 같은 업무를 진행했었다. 이전의 si성격의 회사와는 다르게 현재는 데이터엔지니어 직무를 수행하는 회사에 합격을 한 상태고, 내일이 첫 출근이다. 기존에는 너 무슨 일 해? 라고 물어보면, "데이터 엔지니어야" 라고 답하지 못하고 "음.. 데이터 엔지니어도하고 아키텍트도하고 전반적으로 데이터업계 컨설팅..?" 과 같이 두루뭉실하게 대답했었다. 이제는 원하던(경험하고싶었던) 데이터엔지니어로써 업무를 수행할 수 있게 됐으니 자신있게 말할 수 있을 것 같다. 나는 경력직으.. 2023. 5. 7.
[AWS] Boto3 사용하기 1. S3 다루기 1. 사전 준비 Client low-level 인터페이스 service description에 의해 만들어짐 botocore 수준의 client를 공개(botocore는 AWS CLI와 boto3의 기초가 되는 라이브러리) AWS API와 1:1 매핑됨 메소드가 스네이크 케이스로 정의되어 있음 Resource high-level, 객체지향적 인터페이스 resource description에 의해 만들어짐 식별자(identifier)와 속성(attribute)을 사용 자원에 대한 조작 위주 2. 버킷 생성 import logging import boto3 from botocore.exceptions import ClientError class AWSBoto3(): def __init__(self): sel.. 2023. 4. 12.
[Data] 로그(Log) 데이터의 개념과 활용, 사례 및 수집 알아보기 이번 포스트에는 log데이터에 대해 전반적으로 알아보고 어떻게 수집되고 활용되는지 기업의 사례를 들어가며 정리해보겠습니다. 1. 로그 데이터(log data)란? IT인프라에서 발생하는 모든 상황의 데이터(서비스나 시스템 가동 시 발생되는 이벤트의 기록) 소프트웨어 및 하드웨어,인프라의 상태를 파악하는 시각적 정보의 역할 최근 사용자의 사용성 및 행동 패턴을 확인하거나 유저 클러스터링, 모델링 등 다양한 목적으로 사용되는 행동 기반 데이터 사용자의 행동 패턴을 분석하는데 근간이 되는 데이터의 역할 대체로 시간(TimeStamp)와 함께 출력 되기 때문에 시계열 데이터 개념에 포함되는 개념 2. 로그의 형태 정해진 규칙에 의거하여 Key-Value, JSON 형태로 표현 Key 순서에 맞게 Value 값으.. 2023. 4. 6.
[Data] 데이터의 종류, 서비스 데이터와 행동 데이터(로그성 데이터) 기업에서 다루는 데이터는 크게 2가지로 나뉩니다. 하나는 서비스 데이터고 다른 하나는 사용자 행동 데이터, 즉 로그성 데이터로 볼 수 있습니다. 이번 포스트에는 각각 다른 성격의 데이터에 대해 정리하겠습니다. 1. 서비스 데이터 회원가입, 결제, 제출 등 서비스 운영을 위해서 반드시 필요한 데이터 트랜잭션 데이터라고도 불리우는 데이터 무결성이 필요한 비즈니스 데이터(주로 트랜잭션을 보장하는 RDB에 저장) 2. 행동 데이터 사용자들의 행동 패턴을 확인하기 위해서 별도로 저장하는 데이터 웹 로그 데이터, 앱 로그 데이터, 이벤트 데이터, 사용자 로그 데이터 데이터 규모(사이즈)가 큼 데이터 신뢰도가 서비스 데이터보다 낮음 누락,중복 집계 될 가능성이 있음 웹사이트 페이지뷰, 스크롤, 클릭 등 페이지뷰: 어.. 2023. 4. 5.
[Airflow] Amazon linux2에 docker-compose로 airflow 설치하기 AWS EC2에서 Amazon linux2 OS로 서버가 실행되고 있는 상황에서 부터 시작하겠습니다. 1. docker 설치 $ sudo yum update -y $ sudo yum install docker -y docker 시작 $ sudo systemctl start docker $ sudo service docker start 2. docker-compose 설치 및 권한 부여 1) docker-compose 설치 $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 2) docker-co.. 2023. 3. 22.
728x90