Data Engineering
-
테드창의 숨을 통해 생각하게 된 인간, 사회 그리고 과학기술Data Engineering/Books 2024. 9. 3. 00:06
이전부터 읽어보고 싶었던 책인데, 마침 이번 북클럽 도서로 선정되어 읽게 되었다 (강제성이 없으면 절대 안 읽는..). 컴퓨터 공학과 출신의 소설 작가라니, 굉장히 멋있다는 생각이 들었다. 역시나 책 전반에 과학적 - 특히 컴퓨터 기술적 - 지식이 많이 녹아들어있는 것을 알 수 있었다. 숨겨진 과학적 기반은 무엇일까 생각하며 읽었는데, 솔직히 말해 뒤로 갈수록 집중력이 떨어져서 어렵게 느껴졌다. 베르나르 베르베르의 라는 소설을 좋아했는데, 이 책과 꽤 닮은 점이 있다. 미래를 이야기하는 책이라는 것과 단편집이라는 것. 그렇지만 는 정말 공상과학적인 내용이라면, 은 상상한 미래로부터 인간과 사회, 가치에 대한 질문을 던지는 느낌이었다 (를 너무 오래전에 읽어 잘못 기억하는 걸 수도 있음..). 아무튼 2..
-
오늘, 또 일을 미루고 말았다를 읽고 되새긴 시간 관리와 관련 없을 수 있는 생각들Data Engineering/Books 2024. 7. 28. 00:16
사실 Data Engineering과 관계있는 내용은 아닌데, 저자가 MS 개발자란 이유로(그리고 책 관련 카테고리가 이것 밖에 없는 이유로) 여기에 이 카테고리에 끼워넣게 되었다. 자기 계발 서적을 손에 잡는 편이 아니라, 정말 오랜만에 이런 책을 읽었다. 특히나 이런 시간 관리에 관한 책은 하는 이야기들이 뻔하다는 고정 관념을 갖고 있었는데, Part3부터는 막연하게 스스로 문제라고 생각하고 있던 점을 문장으로 짚어주었던 점이 개인적으로 유의미한 책이었다. 1. 머릿속에 있는 것을 형상화하라, 일단 시작하라. 손이 움직이면 머리도 움직인다. 생각은 머릿속에 존재하는 것이 아니라 체계적이지 않다. 따라서 허점을 발견할 수 없다. 그렇기 때문에 일단 머릿속에 있는 아이디어(설계도, pseudo code..
-
Ubuntu EC2의 메모리 사용량 모니터링하기Data Engineering/AWS, Spark 2023. 8. 23. 19:24
AWS의 모든 인프라는 Cloudwatch로 모니터링한다. 몇일 전부터 사내용 api가 간헐적으로 죽어서 모니터링 지표를 봤는데, 특별히 api가 죽을만한 이유가 없어보였고, 코드 로직 상 데이터가 늘어나면 메모리 부하가 생길 수 있는 구조라 메모리 부하는 아닌가 했는데 cloudwatch가 메모리는 트래킹하지 않고 있었다 (기본적인 지표 아니냐며...). 이유를 대충 찾아보니 baremetal단에 접근해야해서 어쩌구저쩌구 하는데 암튼 안되는 거니 되는 방법을 찾아봤고, cloudwatch agent라는 것을 사용하면 된다고 해서 설치 방법을 적어보려고한다. 괜히 블로그 글 참고했다가 실패하지 말고(내 얘기) 언제나 공식문서를 따르자 1. IAM 만들고 연결 1. IAM > Roles들어가서 create..
-
[Trouble shooting] Glue에서 string index out of range: 0 에러 발생할 경우Data Engineering/AWS, Spark 2023. 8. 7. 18:28
string index out of range:0은 길이가 있는 문자열이 들어와야하는데 빈 문자열이 들어왔을 때 발생하는 에러이다. glue에서 sql쿼리를 실행하는 부분은 string 내에서 각 쿼리를 세미콜론으로 구분한다. 즉 "query A; query B" 이런 식으로 넣으면 세미콜론을 기준으로 쿼리를 끊는 것이다. 따라서 마지막에 세미콜론을 붙이고 아무 쿼리도 작성하지 않는 경우 - "query A;" - 세미콜론 뒤의 문자열 길이가 0이라 위와 같은 에러가 발생한다. 해결하기 위해서는 세미콜론을 지우고 실행하면 된다.
-
Glue에서 mySQL로 write시 encoding option주기 (feat. 한글깨짐) - 2부Data Engineering/AWS, Spark 2023. 5. 15. 22:03
이전에 mySQL로 dynamicFrame을 쓰는데 한글이 깨져서 url로 인코딩 옵션을 주는 방법을 찾았으나 Glue에서 아무리해도 먹지 않았던 포스팅을 쓴 적이 있다. 그래서 spark세션으로 삽입하는 방법으로 작업했고, 포스팅도 그렇게 마무리했는데 (링크) 원인이 너무 궁금해서 re:Post에 질문을 남겨뒀었다. 지나가던 친절한 분이 jdbc driver 버전 문제일 수 있다는 힌트를 주었고, 비록 그분이 달아준 링크는 관련이 없었으나 이를 키워드로 해당 문서를 뒤져보았다. 일단 Glue에서 MySQL jdbc 연결시 default로 사용하는 driver 버전은 8.0.23으로, 굉장히 특이한 위치에 명시되어있다. 찾는데 한참 걸림;; (링크된 문서의 jdbc connectionType 값에 적혀있..
-
RDS MySQL DB 트랜잭션 binary log 보기Data Engineering/AWS, Spark 2023. 5. 11. 18:18
다음 쿼리를 실행하면 서버에 저장되어있는 bin log 파일 목록을 조회할 수 있다. SHOW BINARY LOGS; 해당 로그 파일 중 특정 파일의 로그 내용을 보고 싶다면 다음 쿼리를 사용할 수 있다 (추가 옵션은 공식문서참조) SHOW BINLOG EVENTS IN 'binlog 파일 이름'; 문제는 쿼리로 바이너리 로그를 조회하면 로그 시간이 조회가 안 된다는 것이었다. 나는 시간을 보는 것이 필요했기에 raw log를 받는 방법을 선택했다. Raw log는 mysqlbinlog 유틸리티를 사용해 다운받을 수 있고, mysqlbinlog 유틸리티는 mysql을 설치하면 같이 받아진다. brew install mysql 주의할 점은 바이너리 로그를 AWS 공식문서에 나온 대로 받으면 DB서버 설정..
-
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..