2021/04 4

leetcode 110(이진 트리), 1079(백트래킹, subset), 1286(백트래킹), 1641(dp)

110 leetcode.com/problems/balanced-binary-tree/ 문제를 이해하는데 시간이 좀 걸렸다. 모든 노드에서 각각의 서브트리의 높이 차가 1 초과로 나면 안된다. 1까지의 높이차이는 balanced되었다고 판별한다. 각각의 서브트리를 판별해야 하므로 재귀적으로 풀어야 한다. class Solution(object): def isBalanced(self, root): if not root: return True def check(root): if not root: return 0 l = check(root.left) r = check(root.right) if l == -1 or r == -1 or abs(l - r) > 1: # 좌,우 자식의 높이차가 1 초과로 나면 -1을 ..

Spark Architecture, Job exectution flow

www.edureka.co/blog/spark-architecture/#:~:text=Scala%20and%20Python.-,Spark%20Architecture%20Overview,Resilient%20Distributed%20Dataset%20(RDD) 에서 필요한 정보만 가져다가 정리합니다. 바로 앞 글처럼 스파크가 어떻게 동작하는지는 알아두고싶어서 정리합니다. Spark Architecture Overview 아파치 스파크는 모든 컴포넌트와 레이어가 느슨하게 결합된, 구조적으로 잘 정의된 아키텍쳐이며, 다양한 라이브러리가 통합되어 있습니다. 스파크 아키텍쳐는 두가지 개념을 기반으로 만들어졌습니다. Resilient Distributed Dataset(RDD) Directed Acyclic Gra..

data engineering 2021.04.17

Hive Architecture, Job exectution flow

www.guru99.com/introduction-hive.html 에서 가져옴. 자주 사용하는 하이브(apache hive)가 어떻게 동작하는지는 알아두고 싶어서 필요한 부분만 번역해놓습니다. Hive Architecture. 하이브는 3개의 코어 파트를 유지합니다. 1. Hive Clients 2. Hive Services 3. Hive Storage and Computing Hive Clients 하이브는 여러 타입의 어플리케이션들과 통신하기 위해 여러가지의 드라이버를 제공합니다. 예로 Thrift기반의 어플리케이션은 Thrift 클라이언트를 통신에 사용합니다. 자바 기반의 어플리케이션은 JDBC 드라이버를 사용할 것이고, 그 외의 다른 타입은 전부 ODBC 드라이버를 사용합니다. 이 클라이언트와 ..

data engineering 2021.04.11

spark installation using helm, spark-submit docker

앞의 글에서 계속 언급을 했는데 우리 팀 자체적으로 쿠버네티스 서버가 있다. 근데 쿠버네티스는 순수하게 cli로만 사용하면 러닝커브가 커서 rancher라는 gui를 설치해서 쓴다고 언급했었다. App설치도 간편하다. qkqhxla1.tistory.com/1105 에서 언급한것처럼 helm chart를 추가해주고(bitnami만 추가해주면 왠만해서 다 있다..) qkqhxla1.tistory.com/1133 에서 언급했듯이 클릭만 하면 airflow같은 앱이 간단하게 만들어진다. 그런데 spark chart현 최신버전인 5.4.0을 설치해보면 제대로 되지 않았다. 앱을 지우고 재설치해도 계속 뜨고 버전을 조금 낮춰봐도 에러가 뜬다. 구글링을 몇일동안 죽어라 해도 원인을 찾을수 없어서 포기했다. chart..

data engineering 2021.04.06