전체 글

Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
아파치 스파크 (Apache Spark) 란 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 '라이브러리'들의 집합이다. 1. 컴퓨팅 엔진 여기서 스파크가 '컴퓨팅 엔진' 이라는 의미는 스파크는 저장소 시스템의 데이터를 연산하는 역할만 수행하며 스파크가 직접 빅데이터들을 영구적으로 저장하는 저장소의 역할은 하지 않는다는 의미로 이해할 수 있다. 이러한 점은 Apache Hadoop 과 같은 기존의 빅데이터 플랫폼과의 차별점이 된다. Hadoop의 경우 하둡 파일 시스템과 컴퓨팅 시스템인 맵리듀스라는 두 가지 시스템이 매우 밀접하게 얽혀있어서 둘 중 하나만 단독으로 사용하기 어렵다. 반면, Spark의 경우에는 연산 작업을 수행하는 노드와 저장소를 별도로 구성할 수 있다는 장점이 있다. 2..
Spark 스터디를 시작하면서 실습환경이 필요했는데 현재 회사에서 데이터브릭스를 사용하니까, Spark 개인 공부도 동일한 환경에서 공부를 하면 좋을 것 같아서 데이터브릭스로 결정했다. 그런데 클라우드 서비스인 만큼 과금을 주의해야 하므로 무료 버전 Databricks Community Edition 을 찾아보게 되었다. 시작 방법은 간단한데 데이터브릭스가 상당히 교묘하게 숨겨놔서 주의해야 한다 ! 나와 같은 사람들이 있을 것 같아서 공유한다. https://www.databricks.com/try-databricks Try Databricks - Unified Data Analytics Platform for Data Engineering Discover why businesses are turning..
·Algorithm (PS)
https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 단순하게 벽을 부수는 횟수를 카운트 하다가 오답이 계속 나왔는데 이를 해결하기 위해서 새로 탐색하는 칸이 벽인 경우와 통로인 경우의 가중치를 다르게 주어야 한다. 1) 통로 : 벽을 부수지 않아도 통과하여 이동할 수 있으므로 가중치가 높다. 덱 (deque) 의 앞쪽으로 밀어넣는다 2) 벽 : 벽을 부수어야 하므로 가중치가 낮다. 덱 (deque) 의 뒤쪽으로 밀어넣는다 # ..
·Algorithm (PS)
이진수로 변환하고 -> 이진수를 표현하는 포화 이진 트리를 만들고 -> 포화 이진 트리를 탐색 하는 총 3가지의 로직을 구현해주면 되는 문제이다. 트리 란 비선형 자료구조들 중에서 자료 간 (= 노드) 계층 관계를 가진 자료구조이다. 포화 이진 트리란 모든 리프 노드의 레벨이 동일하고, 모든 레벨이 노드로 차있는 트리이다. 또한 각 노드들이 2개의 자식 노드들을 가지며, 홀수 개의 자식 노드를 가질 수 없다. 즉, 자식 노드가 0개이거나 2개이다. # 포화 이진 트리를 탐색 def check_tree(binary): root = len(binary) // 2 # mid if root == 0: # leaf node return True if binary[root] == '0': if '1' not in ..
·Data Engineering
Apache Airflow 환경 구성 MacOS 환경 Python 3.8.10 버전 단일 local server 위의 환경에서 Apache Airflow 를 설치한다. 우선, airflow 를 설치할 가상 환경을 생성한다. python3 -m venv ./airflow 가상환경을 activate 시켜줍니다. source airflow/bin/activate 다음으로 AIRFLOW_HOME 이라는 환경변수에 airflow 의 경로를 저장합니다. export AIRFLOW_HOME=~/airflow echo 명령어로 환경변수가 잘 설정되었는지 확인합니다. airflow version 에 대한 환경 변수를 설정한다. airflow 2.7 version 은 Python 3.8, 3.9, 3.10, 3.11 을 ..
·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이것이 누적합이다 !! 를 보여주는 문제이다 ㅋㅋㅋ 단순하게 구현하면 시간초과가 나므로 누적합을 이용하여 degree 값을 미리 계산해두고 board에 더해주면 된다. def solution(board, skill): answer = 0 n = len(board) # col m = len(board[0]) # row dp = [[0] * (m+1) for _ in range(n+1)] for t,..
지난주에 시험보고 이제서야 쓰는 후기 AWS Data Analytics Specialty Certification 을 취득했다. Solutions Architect 를 취득하고 나서 머리가 가열되어 있는 상태(?)에서 조금만 더 공부하면 금방 딸 수 있다는 주위 사람들의 말을 듣고 SAA 시험 본 날에 DAS 시험을 신청했다. 솔루션즈 아키텍트 시험을 공부할 때와 동일하게 Exam Topics 로 공부했고 따로 유료 결제까지 하면서 dump 공부를 하진 않았다. 그래서 무료로 제공되는 약 70-80 문제 정도만 1회독 했다. 덤프를 외우지는 않았고 문제 풀면서 몰랐던 기능들을 정리해보았고, 서비스들을 어떻게 붙여서 써먹는지 이해하면서 공부하려고 노력했다. 공부하면서 Kinesis , EMR, Glue 등..
·Algorithm (PS)
https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 와 ~~ 상당히 어려운 재귀인 것 같다 문제를 읽어봤을 때 얻을 수 있는 힌트는 간단하다. 프로젝트 팀이 형성되는 경우는 그래프 구조에서 cycle이 형성되는 상태이다. 따라서 cycle 을 형성하기 위하여 node 들이 이어져있는 관계를 파악해야 한다. 예를 들어서 문제 예시에서 팀을 이루는 (4, 7, 6) 을 살펴보자. 1. visited node 4를 아직 방문하지 않았으므로 4에 대해 방문처리..
minjiwoo
minji's engineering note