목록전체 글 (52)
엔지니어 블로그
Spark on k8s 실행을 위해 이미지 빌드 후 실행을 하니 다음과 같은 에러가 발생했다.Exception in thread "main" io.fabric8.kubernetes.client.KubernetesClientException: JcaPEMKeyConverter is provided by BouncyCastle, an optional dependency. To use support for EC Keys you must explicitly add this dependency to classpath 찾아보니 Spark Kubernetes Cluster에 대해 Spark의 Scala 셸을 사용하기 위해서는 BouncyCastle이 외부 종속성으로 포함되어야 한다고 한다. 따라서 외부 종속성을 JA..

인프라 구성을 마친 후 데이터 Source가 되는 API 서버를 구축하기로 했다. 원래 DB에 저장 후 가져오는 방법을 사용하려고 했으나 그 방법은 자주 접해본 방법이기 때문에 API 서버를 직접 구축하고 데이터를 수집하는 방식으로 결정했다. FastAPI를 사용하고 Postgresql과 연동하여 API를 구축했다. GET 메서드만 사용하는 간단한 서버이기 때문에 크게 어려움은 없었다. 고민한 지점은 한가지가 있었다.준비 된 데이터를 수집하는 주기는 어느정도로 잡아야 하는가?주기를 잡은 후에 어떤 기준으로 데이터를 가져 올 것인가?기존에 구상했던 것은 실제 웹 서버가 있고 사용자 행동 로그가 발생하는 것과 같은 방식이었다. 하지만 기준으로 발생 기준으로 잡을 컬럼이 애매했다. 그래서 ID 값을 따로 만..

풀이배열 내의 단어들이 Anagrams인 것들 끼리 묶어서 2차원 배열을 리턴하면 되는 문제다.for문을 이용해서 각각의 요소를 정렬한 후 dict 내에 sorted_str : [str1,str2] 와 같은 형태로 저장하고 value 값들을 list에 담아 리턴하는 형식으로 문제를 풀었다. 코드class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: dict = {} ans = [] for str in strs: sort_str = "".join(sorted(str)) if sort_str in dict.keys(): ..

Queue1.Queue란 무엇인가?Queue는 선입선출(FIFO) 논리 기반으로 데이터를 저장하기 위해 개발된 선형적 자료구조다. Stack과 형태적으로 유사하다. 유일한 차이점은 Queue는 양 끝단이 열려있다는 것이다. 한쪽 끝으로는 데이터를 추가하고 반대쪽 끝으로는 데이터를 제거하는데 사용된다. 이때 데이터를 추가하는 작업을 Enque,제거하는 작업을 Deque 라고 한다.2.Queue vs ArrayQueue는 Array와도 동일한 형태를 보인다. 하지만 Array가 각각의 요소를 Index로 접근할 수 있는 것에 비해 Queue는 불가능하다. 오로지 양 끝단에서 데이터를 추가하거나 삭제하는 것만 가능하다.3.Queue의 시간복잡도Queue는 빅오 표기법으로 시간복잡도가 O(1)이다. Queue는..

1. Spark의 기본적인 아키텍처Spark은 기본적으로 3 부분으로 나누어 볼 수 있다.1.Driver2.Cluster Manager3.Executor1.DriverDirver는 Spark Application을 실행하는 역할이다. main 함수를 실행하고 SparkContext 객체를 생성하게 된다.2.Cluster ManagerDriver로 부터 실행계획을 전달 받아 필요한 만큼의 Worker를 생성하게 된다. YARN,K8S가 사용되며 Worker의 failover도 담당하게 된다.3. Executor다수의 Worker 노드에서 실행되는 프로세스로 Spark Driver가 할당한 작업을 수행하여 결과를 반환한다.2. Spark 작동 과정 1.Spark SumitDriver에게 작업 내용 전달 2...

1.Spark란 무엇인가Spark는 Data Engineering, Science, ML 등의 작업을 수행할 수 있는 Muilti-Language 엔진/프레임워크다. 단일 노드 및 cluster 형태로 대량의 컴퓨팅 자원을 사용할 수 있고, 대량의 데이터에 대해 분산퇸 컴퓨팅 처리를 신뢰성 있게 처리할 수 있다.2.Spark 주요 기능Batch/Streaming단일 모델과 프레임워크로 Batch,Streaming을 통합 개발 할 수 있다.SQL AnalyticsANSI SQL로 빠른 분산 처리 결과를 얻을 수 있다. 기존의 DW 솔루션보다 빠르게 결과를 얻을 수 있다.Data Sciencepetabyte-scale 데이터에 대해 Downsampling 없이도 EDA가 가능하다MLML 알고리즘 학습이 가능..

문제상황python 에서 postgresql을 사용하기 위해 패키지 설치 중 발생한 에러다.가만 읽어보면 pg_config executable not found. 가 보인다.시스템에 postgresql이 설치가 되지 않아 pg_config가 존재하지 않는 것으로 보인다. *pg_config는 psql의 정보가 있는 파일이다. 해결방법해결 방법은 시스템에 postgresql을 설치해주면 된다.나의 경우 ubuntu 환경이기 때문에 apt install postgresql 로 설치 후 해결했다.

풀이문제는 생각보다 간단하다. 다양한 종류의 괄호가 있고 이 괄호들이 문자열 s 안에 있을때 제대로 닫혀있는지 확인하면 되는 문제였다. 이전에 문제를 풀면서 너무 깊게 생각하면 자꾸 산으로 가는 경향이 있던 것을 떠올려 쉽게 쉽게 생각하기로 했다. 우선 각각의 괄호 값을 매핑한 dict를 생성한 후 s 의 값을 하나씩 list에 담아가면서 닫혀있는지 확인하는 식으로 진행하는 것으로 방향을 잡았다. 코드class Solution: def isValid(self, s: str) -> bool: stack = [] str_dict = {'{':'}','[':']','(':')'} for str in s: if str in str_dict.value..