본문 바로가기

IT 개인학습52

Deploy 1. 마트화 쿼리 작성(= Jupyter에서 제공할 테이블 코드 작성) 2. Github에 pyspark, DAG 코드 -> PR 리뷰어 설정 후 Slack PR확인 요청, 확인 후 Merge = 다른 배치 영향안주는지 확인해보는 것이 좋음 3. DAG에 추가 수정 있을 경우 Jenkins 배포(배포 전 release 최신버전 필요) Pyspark 쿼리만 변경 시 x DAG 란? 데이터파이프라인을 의미하는 하나의 단위 - 하나 이상의 Task를 가지고 있고, 각각의 task들은 실행 순서를 가지고 실행 Deploy 순서 1. S3에 pyspark script 업로드(= Airflow는 S3에 있는 pyspark 파일을 읽어서 작업) 경로 : Croquis-data-emr-da > application >.. 2022. 5. 7.
Jenkins 젠킨스 Jenkins - CI/CD 툴 CI/CD - 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법 Continuous Integration(개발자를 위한 자동화 프로세스인 지속적인 통합하는 것) Continuous Delivery(지속적인 서비스 제공 및 지속적인 배포가능한 상태를 유지하는 것) 1. 자동화된 방식으로 연속적인 데이터 통합 작업을 실행할 수 있는 Java 기반 오픈 소스 서버입니다. 2. 데이터 통합을 촉진하고 소프트웨어 프로젝트를 위한 데이터의 안전한 전달을 보장합니다. 또한 프로젝트 구축, 테스트 및 배포와 관련된 다양한 작업을 자동화합니다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 .. 2022. 5. 7.
SQL SQL 읽히는 순서 FROM : 각 테이블 확인 ON : 조인 조건 확인 JOIN : 테이블 조인 (병합) WHERE : 데이터 추출 조건 확인 GROUP BY : 특정 칼럼으로 데이터 그룹화 HAVING : 그룹화 이후 데이터 추출 조건 확인 SELECT : 데이터 추출 DISTINCT : 중복 제거 ORDER BY : 데이터 정렬 CASE조건 SELECT Price, IF (Price > 30, 'Expensive', 'Cheap'), CASE WHEN Price < 20 THEN '저가' WHEN Price BETWEEN 20 AND 30 THEN '일반' ELSE '고가' END FROM Products; ## switch 문 방식 ''' 조건을 부여할 수는 없고 컬럼의 값만 체크하여 값을 반환할.. 2022. 5. 7.
Airflow Airflow - workflow관리 툴 Airflow는 Python 코드로 워크플로우(workflow)를 작성하고, 스케쥴링, 모니터링 하는 플랫폼입니다. Airflow를 통해서 데이터엔지니어링의 ETL 작업을 자동화하고, DAG(Directed Acyclic Graph) 형태의 워크플로우 작성이 가능합니다. 이를 통해 더 정교한 dependency를 가진 파이프라인을 설정할 수 있습니다. 또한 AWS, GCP 모두 Airflow managed service를 제공할 정도로 전세계 데이터팀들에게 널리 사용되고 있으며 그만큼 넓은 커뮤니티를 형성하고 있습니다. Apache Airflow는 자동화된 워크플로를 예약하는 기능도 제공합니다. 즉, 사람의 개입 없이 워크플로가 지정된 시간에 실행됩니다. 따라서 .. 2022. 5. 7.
Python에서 시간 측정하기(Decorator, Command line) * Decorator 활용 import time from functools import wraps def check_time(function): @wraps(function) def measure(*args, **kwargs): start_time = time.time() result = function(*args, **kwargs) end_time = time.time() print(f"@check_time: {function.__name__} took {end_time - start_time}") return result return measure @check_time def test_function(): for _ in range(10000): print("Just print something") .. 2021. 9. 26.
Error, try ... except Error 1. 실행전 Error => 구문에러( SyntaxError ) = 문법적인 문제가 발생 2. 실행중 Error => 예외( Exception, RuntimeError ) ==> 예외처리해줄 수 있음 ( Exception handling = 조건문 or try except 구문 ) Error list AssertionError: assert 문이 제대로 작동하지 않을 때 발생합니다. IndexError: 참조 하려는 인덱스가 범위를 벗어날 때 발생합니다. KeyError: 참조 하려는 키가 기존 키 집합에서 찾을 수 없을 때 발생합니다. KeyboardInterrupt: 사용자가 인터럽트 키(Control + C, 혹은 Delete)를 누를 때 발생하며, 모든 Exception을 잡는 코드에 .. 2021. 7. 18.
Class 상속(inheritance) 상속(inheritance) 국가라는 클래스가 있고, 그것을 상속받은 한국, 일본, 중국, 미국 등의 클래스를 만들 수 있으며, 국가라는 클래스의 기본적인 속성으로 인구라는 속성을 만들었다면, 상속 받은 한국, 일본, 중국 등등의 클래스에서 부모 클래스의 속성과 메소드를 사용할 수 있음 class 부모클래스: # (Parent Class, Super class) ...내용... class 자식클래스(부모클래스): # (Child class, sub class) ...내용... # 자식클래스에서는 부모클래스의 속성과 메소드는 기재하지 않아도 포함이됨 MRO(Method Resolution Order)란? 메소드 결정 순서 __mro__ 파이썬은 기본적으로 다중 상속을 지원 죽음의 다이아몬드는 다중 상속을 .. 2021. 7. 18.
매직메소드 매직 메소드 클래스 안에 정의된 함수 ( 리스트, 튜플, 딕셔너리, 정수, 실수, 문자열 등과 같은 타입 역시 클래스를 통해 만들어진 기본 데이터 타입 ) ex 직접 만든 타입도 인덱싱 기능을 제공하려 할때 매직메소드 사용 class Notebook: def __init__(self, name, price): # 객체의 초기화를 위해 클래스 생성시 호출될때 동작 self._name = name self._price = price def __str__(self): # 클래스의 인스턴스에서 str()이 호출될 때의 동작 return f'{self.__class__.name} Class Info : {self._name}, {self._price}' def __add__(self, x): # 사용하기 쉽게 +.. 2021. 7. 18.