분류 전체보기
-
[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이라 위와 같은 에러가 발생한다. 해결하기 위해서는 세미콜론을 지우고 실행하면 된다.
-
[Leet Code] 27.Remove Element - EasyCS기초/Algorithm, Data Structures 2023. 8. 3. 00:15
문제 Description Input: nums => list[int], val => int Remove all elements same with "val" in the given array "nums" and change the array to starts with the elements which are not same with "val". The array must be changed in place. Return the number of elements same with "val". The judge will test below two points: 1. The returned value is correct - name this value as "k" 2. Each element from 0 to..
-
[Trouble shooting] Datahub S3 메타데이터 주입시 에러 발생Project/D.D.P (Datahub) 2023. 7. 10. 11:08
처음 발생한 에러는 다음과 같다. File "/home/ubuntu/.local/lib/python3.10/site-packages/datahub/ingestion/run/pipeline.py", line 122, in _add_init_error_context raise PipelineInitError(f"Failed to {step}: {e}") from e datahub.ingestion.run.pipeline.PipelineInitError: Failed to configure the source (s3): Java gateway process exited before sending its port number 위 에러를 보고 자바가 설치되어있지 않기 때문이라고 생각해서 자바를 설치했다. sudo..
-
[알고리즘] 정렬 알고리즘 : 합병정렬 (Merge sort)CS기초/Algorithm, Data Structures 2023. 6. 27. 08:19
정렬의 기초로 분할 정복 방법을 사용해 분할, 정복, 결합의 세 단계를 거친다. 분할: 배열을 동일한 크기의 두 개의 부분 배열로 분할한다. 입력 크기를 n이라고 한다면 분할된 부분배열의 크기는 n/2가 된다. 정복: 각각의 부분 배열에 대해 합병 정렬을 순환적으로 적용한다. 결합: 정렬된 두 부분 배열을 합쳐서 하나의 정렬된 배열을 만든다. 간단하게 설명하면 합병정렬은 배열을 쪼개서 각각 정렬한 후 합치는 알고리즘이다. def merge_sort(num): l = len(num) if l > 1: mid = round(l/2+0.1) left = merge_sort(num[:mid]) right = merge_sort(num[mid:]) num = merge(left, right, mid, l-mid)..
-
눈으로 보기에 같은 글자이지만 다른 글자로 인식되는 경우에는 아스키코드를 뽑아보자Tips 2023. 6. 12. 23:09
현재까지 수집된 검색어를 대상으로 추천 검색어를 추출하는데, 입력된 검색어와 달라야하는 조건이 있었다. "한복"을 검색했는데 "한복"을 추천해주는 건 의미가 없으니. select input_s."query" as input_query , rmcd_s."query" as rcmd_query from searched_quries as input_s join searched_queries as rcmd_s on input_s.user_id = rcmd_s.user_id where input_s."query" != rcmd_s."query" (위의 코드는 실제 데이터를 추출한 코드에서 로직만 간략하게 표시한 코드이다) join시 where절에 input 검색어 != 추천 검색어 조건을 걸어줬는데도 다음과 같이 ..
-
Javascript에서 서버 시간대에 상관없이 한국 시간으로 현재 날짜 호출하기Tips 2023. 5. 16. 10:35
function getToday() { const locale = new Date(); // 서버 시각 /* 1) .getTime()을 통해 현재 서버의 에폭시간(unix time)을 구함 2) .getTimezoneOffset()을 통해 서버와 UTC간의 시간차를 분단위로 구함 (Offset이라고 함) 3) Offset에 *60000을 해서 밀리초로 변환함 4) 두 초를 더해줌 = UTC의 에폭시간이됨 */ const ust = locale.getTime() + (locale.getTimezoneOffset() * 60 * 1000); /* 1) KST와 UST의 시차인 9시간을 밀리초로 변환해준 것을 UST와 더함 = KST의 에폭시간이 됨 2) KST의 에폭시간을 Date함수의 인자로 넣어주면 연,..
-
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서버 설정..