본문 바로가기

분류 전체보기38

[12시간 삽질기].. 아나콘다 파이썬 버전 변경 오류 주의점 본문은 삽질기, 주의점 요약은 아래 있습니다. 아파치 플링크를 공부하기 위해 플링크를 다운받고 아나콘다 환경에서 pip를 통해 플링크를 설치하려고 했다. 기존 내 콘다 환경은 python3.9 이다. pip 를 통해 flink를 설치중 numpy 버전이 맞지 않아서 설치가 되지 않는다고 했다. 새벽동안 너무 삽질을 오래해서 기억이 가물가물한데 오류 내용은 요구되는 numpy 버전이 python < 3.7 에 호환된다는 내용이었다. 그래서 처음 나는 콘다 환경의 파이썬 버전만 변경하면 되는줄 알았다. 파이썬 버전을 변경 하려고 했는데 solving environment failed with initial frozen solve. retrying with flexible solve 이 에러문구만 계속해서 나.. 2022. 5. 11.
[Python] List 연산 주의점 알고리즘 문제 풀이 중 거의 18시간 동안 답이 안 나온 문제가 있었다. 아무리 생각해도 오류가 없는데 왜 답이 안되는지 코드 한 줄 한 줄 뜯어보면서 결국엔 알아냈다. 원인은 파이썬 리스트 연산 때문이었다. 아래 두 개의 코드는 결과 출력 값을 보면 똑같다. 하지만 다음 코드를 적용하면 어떤 결과가 나올까? result[2][1] = "A" result_lcph[2][1] = "A" 결과 출력 내가 처음 예상한 결과 값은 result와 result_lcph 둘 모두 오른쪽 결과처럼 나왔어야 했다. 하지만 보다시피 전혀 다른 결과를 낸다. 이러한 원인을 공부하고 블로그에 게시하기 위해 파이썬 docs를 찾아본 결과 정확하게 "이것은 종종 새 파이썬 프로그래머들을 괴롭힙니다"라는 문구가 있다. 리스트에 리.. 2022. 5. 4.
[Docker] M1 맥 도커 confluentinc/cp-kafka 대체 이미지 m1 맥은 arm64 아키텍쳐이다. 그러나 현재 confluent 에서 제공하는 카프카 이미지는 amd64만 지원하고 있다. 정식으로 m1 맥을 지원하는 이미지를 아직 출시하지 않아서 기존 confluent사의 kafka 이미지를 사용하면 아키텍쳐가 맞지 않다고 경고 메시지가 뜨게 된다. 기존 이미지가 실행에는 큰 문제가 없을 것으로 알고 있지만 공식 출시 전까지 대체 할 수 있는 arm64 용 이미지를 찾아보게 되었다. m1 맥이 사용할 수 있는 arm64 아키텍쳐를 지원하는 kafka 이미지를 찾았고, 링크를 남겨둔다. https://github.com/confluentinc/kafka-images/issues/80#issuecomment-1108911026 Add images for ARM 64 ·.. 2022. 4. 28.
[Apache Spark] 아파치 스파크 RDD란? RDD를 이해하면 아파치 스파크를 90% 이해했다고 한다. 스파크를 계속 사용하면서 알듯 말 듯 RDD를 다시 한번 공부하면서 게시글을 작성해 보려 한다. Spark RDD Resilient Distributed Dataset (RDD) 탄력적인 분산 데이터 셋 Resilient 는 탄력적이라는 뜻이 있다. 데이터를 병렬처리하는 스파크의 일부 노드에서 데이터를 처리하는 중에 문제가 발생하면 문제를 회복 할 수 있다는 것을 뜻한다. 데이터를 병렬 처리 중 어떤 노드에서 문제가 발생해도 데이터를 손실 없이 회복 할 수 있는 이유는 무엇일까? 이 이유를 알기 위해서는 RDD의 특징을 앎으로서 이해 할 수 있다. RDD의 특징 1. 데이터 추상화 스파크는 여러 클러스트에서 데이터를 하나의 파일처럼 다룬다. 어떤.. 2022. 4. 19.
[Apache Airflow] 아파치 에어플로우란? Apache Airflow 아파치 에어플로우 에어비엔비에서 개발한 워크플로우 스케쥴링, 모니터링 플랫폼 아파치 탑 레벨 프로젝트 에어비엔비, 야후, 페이팔, 인텔, 스프라이프 등 여러 회사들이 사용중이다. 대형 프로젝트들에서 겪고 있는 공통적인 문제가 있고 이러한 문제를 아파치 에어플로우가 해결해 줄 수 있다. 에어플로우를 사용하는 이유 한 두개의 파이프라인을 관리하는것은 스케쥴링, 모니터링이 어렵지 않다. 하지만 관리해야 하는 파이프라인이 수십개가 있다면? 파이프라인마다 의존성이 복잡한 경우라면? 에어플로우는 워크 플로우를 작성, 스케쥴링, 모니터링을 쉽게 할 수있게 해주는 플랫폼이기 때문에 사용 한다. * 워크 플로우란 의존성으로 연결된 작업(task)의 집합 => DAG(Directed Acycli.. 2022. 4. 16.
알고리즘 풀이에 대한 고민 알고리즘은 결국 성능과 연관이 있다. 아무리 코드가 짧더라도 for문이 중첩되어 있다면 그 코드는 BIG-O(n^2)가 되어버리는 것처럼 성능을 고민하면서 코드를 작성해야한다. 특히 파이썬의 경우 데이터를 다루는데 특화되어 있어 python module을 잘 활용하는것도 중요하다. 나는 알고리즘 문제풀이 초보지만 최대한 O(n)을 O(1)을 생각하면서 코드를 짠다. 그러다보니 문제 풀이 시간이 길어진다는 문제가 있는데 시간의 문제는 차차 나아질거라고 생각한다 고민의 시작은 시간이 아닌 나의 풀이는 항상 조금 길다는 것인데, 다른 사람의 풀이를 보게 되면 굉장히 짧아서 매번 충격에 압도된다. 오늘 알고리즘 풀이를 한 문제와 풀이는 아래와 같다. 이용자의 ID가 담긴 문자열 배열 id_list, 각 이용자가.. 2022. 4. 9.