2021/09 3

leetcode 160(linked list), 2006(caching), 1850(permutation, 구현)

160 https://leetcode.com/problems/intersection-of-two-linked-lists/ easy난이도인데 맨 아래의 제한조건이 O(n) 시간복잡도, O(1) 공간복잡도이다. 이거 생각하면서 풀려면 어렵다. 예제들을 살펴보면 교차로부터는 값이 전부 동일한걸 알수있다. input a,b중에 길이가 긴 링크드 리스트를 짧은 링스크 리스트랑 길이를 맞춰줄만큼 앞으로 전진해서 탐색을 시작한다. 둘다 똑같이 한칸씩 전진하면서, 값이 같으면 그걸 리턴해주고, 같은 값이 없으면 아무것도 리턴해주지 않으면 된다. class Solution(object): def getIntersectionNode(self, headA, headB): len_a, len_b = 0, 0 t_headA, ..

pyspark Cannot cast DOCUMENT into a NullType 관련.

pyspark로 몽고에서 컬렉션을 읽어와 잡을 돌리고 있다. 몽고에서 컬렉션을 읽어와서 title이라는 필드에서 \t,\r,\n을 제거하고 이후의 프로세싱을 하기 위한 작업이다. ....... df = self.spark.read.format("com.mongodb.spark.sql.DefaultSource") \ .option("spark.mongodb.input.partitioner", "MongoSamplePartitioner") \ .option("spark.mongodb.input.partitionerOptions.partitionKey", "_id") \ .option("spark.mongodb.input.partitionerOptions.partitionSizeMB", 128) \ .opti..

data engineering 2021.09.20

airflow Kubernetes Executor, how helm values.yaml works

바로 이전글(https://qkqhxla1.tistory.com/1159) 에서는 kubernetes에서 helm을 사용해 airflow를 구성하는데 초점을 두었었다. 그런데 내가 kubernetes와 helm에 익숙하지 않아서 가장 쉽고 익숙한 airflow를 CeleryExecutor로 구성했었다. airflow-worker에 spark를 통째로 올려놓고, docker-in-docker로 docker를 마운트해놓은다음 대부분의 배치 잡은 DockerOperator로 실행하고, spark잡을 실행할 때는 airflow-worker내에 설치된 스파크를 직접 호출해서 사용한다. 간단한 구성도이다. CeleryExecutor이 기본 설정으로 되어있기도 하고 구성도 쉬워서 이렇게 만들었었는데, 구성하고 이것저..

data engineering 2021.09.05