분류 전체보기
-
Glue에서 mySQL로 write시 encoding option 주기 (feat. 한글깨짐)Data Engineering/AWS, Spark 2023. 5. 10. 18:06
Glue에서 from_jdbc_conf를 통해 dynamicFrame을 insert시켰는데 DB의 기본 인코딩 세팅때문에 한글이 깨져서 인서트되는 문제가 발생했다 (5.7 이하 버전) pymysql의 connection메소드에는 이를 위해 charset이라는 옵션이 있는데, from_jdbc_conf에는 인코딩 옵션이 없어 찾아보니 인코딩 옵션을 jdbc url의 파라미터로 넘겨줄 수 있었다. 처음에 확인했던 문서에는 인코딩 옵션을 넘겨주는 파라미터 이름이 characterEncoding이라고 되어있어 그렇게 넘겨줬더니 An error occurred while calling o111.pyWriteDynamicFrame. Unsupported character encoding 'utf8?useCursor..
-
Lamda로 서로 다른 vpc에 있는 redshift에서 rds로 reverse ETL하기 (VPC peering)Data Engineering/AWS, Spark 2023. 5. 9. 00:32
AWS에서 작업을 하다보면 항상 가장 힘든게 네트워크 설정인 것 같다. 오늘은 Lamda로 서로 다른 private subnet에 있는 redshift에서 rds로 reverse ETL 파이프라인을 구성했던 방법을 기록해보려한다. 기본적으로 Lambda는 public network에 위치하고, private network로는 접근할 수 없다. 따라서 lamda에서 RDS나 redshift에 접근하기 위해서는 Lamda 함수를 생성한 후, 해당 함수의 configuration에서 접근하고자하는 VPC와 subnet, 그리고 보안그룹을 선택해서 람다가 해당 private network에 위치하도록 해주어야한다. 하지만 이렇게 했을 때 문제점은, Lamda가 특정 private subnet에 들어가기 때문에 ..
-
Data Catalogue Platform 구축기: 0.구축 계획 수립 (기존 구축 process에서 수정 및 추가)Project/D.D.P (Datahub) 2023. 4. 5. 19:44
처음 구축했던 process에서 초록색 부분을 수정 및 추가해서 구축하기로 계획을 세웠다. 전체 계획 1. Terraform으로 네트워크 및 EKS 클러스터 구축 2. Terraform으로 ArgoCD 설치 및 배포 3. ALB 연결해서 ArgoCD 노출시키기 4. ArgoCD로 Datahub 설치 및 배포 5. ALB 연결해서 Datahub 노출시키기 6. MySQL DB 배포 (Datahub metadata DB) 7. EKS 클러스터에 Datadog 연결하여 모니터링 시스템 구축 8. Glue, S3 소스 주입 9. Metadata 자동 업데이트 기능 구축: 1) Metadata 배치 주입 2) Glue/ S3에 리소스 삭제시 Datahub DB에 sync맞추는 기능 3) Glue job 생성/ 수..
-
[자료구조] 자료구조를 알아야하는 이유와 배열(list), 연결리스트(linked list)CS기초/Algorithm, Data Structures 2023. 4. 1. 00:56
배열 포스팅을 쓰면서 참조, mutable, id까지 쓰려다가 평생 포스팅 못 할 것 같아 일단 간단하게 자료구조에 대한 글 먼저 쓰려고 한다. 자료구조 (Data Structure) 자료구조는 컴퓨터에서 값을 담는 구조이다. 컴퓨터는 자료구조로 값 사이의 논리적 관계를 조직화한다. 예를 들어 값 사이의 계층을 만든다던가, 값의 순서를 인식한다던가 하는 것이다. 이런 논리적 관계의 인식 때문에 각 자료구조는 같은 값을 담아도 컴퓨터 내에서 사용하는 메모리의 용량과, 값을 삽입, 수정, 탐색, 삭제 시 소요하는 시간이 달라진다. 시간과 메모리는 프로그램의 가장 기본적인 비용이며, 이것이 개발자가 자료구조를 알아야하는 이유이자 알고리즘을 배울 때 자료구조가 항상 따라오는 이유이다. 컴퓨터의 기본 자료구조는 ..
-
컴퓨터에서의 뺄셈 구현 - 보수(complement)를 활용한 감산의 가산 처리CS기초/OS,HW 2023. 3. 29. 20:09
컴퓨터에서 곱셈은 덧셈, 뺄셈과 나눗셈은 보수의 덧셈을 활용하여 동작한다. 따라서 컴퓨터는 사칙연산 중 덧셈밖에 하지 못한다. 일단, 곱셈의 경우 덧셈으로 간단하게 구현이 가능한데, 해당 연산을 위한 회로를 따로 설계하는 것은 비효율적이기 때문이다. 나눗셈 역시 피제수(나누어지는 수)에서 제수(나누는 수)를 제수보다 적어질 때까지 계속 뺀 후 뺄셈의 횟수를 세면 되기 때문에 뺄셈을 구현하면 따로 회로를 설계할 필요가 없다. (예 - 7/2 → 2보다 작아질 때까지 7에서 2를 빼서 뺀 횟수를 구함 → 3, 나머지 1) 그렇다면 뺄셈은 왜 보수의 덧셈으로 구현할까? 뺄셈은 정확히 말하면 양수와 음수, 또는 음수끼리의 덧셈이다. 덧셈은 교환법칙이 성립하지만 뺄셈은 성립하지 않으므로, 앞 뒷 값의 절대값 크기..
-
험난하고 험난한 Datahub - EKS Trouble shooting: prerequisites-cp-schema-registry pod CrashLoopBackOff 해결하기 (EBS CSI Controller 설치)Project/D.D.P (Datahub) 2023. 3. 27. 21:20
EKS 구축하는 동안 제일 많이 한 말이 아늬...왜 안되냐고... 인 것 같다. 자꾸 파드가 죽고, 그러다 갑자기 지 혼자 살아나고, 그러다 다시 죽어있고..... 아니.. HA때문에 EKS 쓴다면서요.. 내 클러스터는 가용성 왜 이런데.. 문제 상황 prerequisites-cp-schema-registry-xxx 파드: CrashLoopBackOff elasticsearch-master, prerequisites-kafka, prerequisites-mysql, prerequisites-zookeeper 파드: Pending 문제 원인 파악 0. 진정하기 (이제 crashloopbackoff만 봐도 화남) 1. 파드에 문제가 생기면 일단 describe 확인 -> log 확인으로 문제 원인을 알 수..
-
Einstein's riddle - Who owns the goldfish? : How I solved (아인슈타인의 "금붕어를 키우는 사람은 누구인가" 문제)카테고리 없음 2023. 2. 11. 01:30
불금을 맞이하여 알고리즘이 아닌 문제를 한번 풀어보았다. 답은 생각보다 빨리 찾았는데 문제랑 상관없는 다른 질문이 생겼고, 같은 질문을 하는 글들이 있어 기록을 해본다. (아.. 한국어로 같이 적다가 너무 힘들어서 포기함) * Following question and conditions are translated back in English from Korean so some words or nuance can be different from the original text. I recommend to look for the original English version. (아래의 문제는 영어 원문을 한국어로 전달받은 것을 다시 영어로 번역한 것이므로 원문의 뉘앙스와 다른 것이 있을 수 있으니, 원문을 찾..
-
우분투에 Curl 최신 버전 설치하기 (http 400, 500에러 실패 처리하기 (--fail 옵션), curl: option --retry-all-errors: is unknown 에러 해결)Tips 2023. 1. 30. 16:24
http 400/500 응답시 cUrl 요청 실패처리하기 cUrl은 http, https, ftp 등의 프로토콜을 통해 url로 데이터를 전송하는 명령줄 도구이다. 서버가 응답을 하면 성공으로 인식을 하는데, http/https서버의 경우 400번대, 500번대 응답 코드를 받아도 응답한 것으로 간주하여 CICD 파이프라인에서 cUrl로 서버 응답 확인을 할 때 서버는 띄워졌으나 특정 엔드포인트가 응답하지 않을 경우에도 exitcode를 0으로 리턴하는(성공)으로 인식하는 문제가 있었다. 이 때, 두 가지 방법으로 처리할 수 있는데, 첫번째 방법은 -w 옵션을 사용하여 http상태코드를 출력값으로 받는 것이다. 해당 출력값을 변수로 받아 if문으로 200이 아닌 경우 파이프라인을 실패하도록 처리할 수 있..