glue
-
[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. 한글깨짐)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..
-
Pyspark Dynamic Frame에서 JSON을 요소로 가지는 배열 해체해서 컬럼으로 만들기 (make lists of JSON to columns of a dynamic frame)Data Engineering/AWS, Spark 2022. 12. 15. 01:31
데이터 전처리나 ETL을 하다보면 여러가지 형태의 데이터들을 파싱하게 되는데, 이번 포스팅에서는 pyspark dynamic frame에서 한 필드(행/컬럼)의 값이 array[json] 형태로 되어 있을 때 각 열의 array를 해체한 뒤 내부의 json의 키를 해당 dynamic frame의 새로운 필드로 설정하고 해당 키의 값을 필드의 값으로 넣는 과정을 설명하려고 한다. 글로 적으니까 되게 복잡한데 코드는 생각보다 짧다 (relationalize 메서드가 다 알아서 해줌) 1. DynamicFrame 클래스의 relationalize 메서드를 사용해 대상 dynamic frame과 1:N 관계를 갖는 JSON의 각 키를 필드로 가지는 새로운 dynamic frame을 생성한다. 2. 기존 dyna..