2020/09 3

spark mongo data processing, write csv to s3 삽질 정리.

https://qkqhxla1.tistory.com/1006 의 mongo부분의 글을 재정리함과 동시에 겪었던 모든 문제들을 적으려고 한다. 하려는 작업의 도식도는 위의 그림과 같다. 몽고디비에서 데이터를 가져와서 스파크에서 전처리를 한다. 그후 전처리된 데이터를 csv형태로 S3에 저장한다. (S3에 저장된 데이터는 하이브 테이블로 만들 예정인데 그건 다른 글에 많이 써놔서 제외한다.) 공용으로 쓰는 spark서버 말고 새로 구축해서 우리꺼 전용으로 사용하려고 내가 구축한 kubernetes rancher서버에 bitnami spark로 아무 버전이나 설치했었는데 이러면 안되었다. 삽질하면서 얻은 중요한 결론을 먼저 적자면 spark는 spark버전과 hadoop버전, 거기에 관련된 jar버전까지 전부..

data engineering 2020.09.21

leetcode 787(다익스트라), 241(dp, 분할정복)

787 https://leetcode.com/problems/cheapest-flights-within-k-stops/ 아주 오랫만에 보는 다익스트라 문제다. 기존에 풀던 다익스트라와 차이를 적자면, K번 stop이라는 횟수제한이 있어서 이 제한조건을 충족시켜야 한다. from collections import deque class Solution(object): def findCheapestPrice(self, n, flights, src, dst, K): adj = [[] for i in xrange(n)] for s,e,w in flights: adj[s].append([e, w]) dist = [float('inf') for i in xrange(n+1)] dist[src] = 0 q = dequ..

leetcode 120(dp), 226(트리), 785(이분 그래프, bipartite), 703(heap)

120 https://leetcode.com/problems/triangle/ 위에서부터 내려오면서 최소 값들을 triangle리스트에 업데이트해준다. 그리고 맨 마지막까지 끝났을때 거기서 최소값을 리턴한다. class Solution(object): def minimumTotal(self, triangle): if not triangle: return for i in xrange(1, len(triangle)): for j in xrange(len(triangle[i])): if j == 0: triangle[i][j] += triangle[i-1][j] elif j == len(triangle[i])-1: triangle[i][j] += triangle[i-1][j-1] else: triangle[i..