Data Engineering/AWS, Spark
-
Glue Spark UI 서버 띄워서 Job 상세 실행 내역 확인하기Data Engineering/AWS, Spark 2023. 1. 6. 11:33
1. aws glue sample 레포지토리에서 Glue 버전에 맞는 docker file과 pom.xml을 다운받는다. 2. 다음 명령어로 도커 이미지를 빌드한다. docker build -t glue/sparkui:latest 3. 다음 중 하나의 방법으로 컨테이너를 띄운다. Glue job event log s3 uri는 s3://.. 가 아닌 s3a://... 로 넣어야한다. 만약 자주 실행한다면 로그 디렉토리 경로 등을 환경변수로 저장해놓는 것이 편하다. 이 포스팅을 볼 정도면 다들 알겠지만 백그라운드로 실행하고 싶지 않다면 -itd가 아닌 -it로 run하면 된다. Beijing, Ningxia 리전의 경우 추가적인 옵션이 필요하다. 위 레포지토리의 README.md를 참고하면 된다. 1) A..
-
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..
-
[Trouble shooting] Glue에서 사용자 정의 함수(udf) 만들어서 사용하기 (+apply, map, applymap 함수의 차이)Data Engineering/AWS, Spark 2022. 7. 4. 00:43
*바로 udf코드를 보고싶다면 아래의 "Glue UDF 적용하기"부터 읽어주세요 Redshift에 json으로 데이터가 쌓이고 있는 테이블이 있어서 이 테이블에서 데이터를 가져와 → 파싱 → 다른 데이터들과 함께 새로운 분석용 테이블을 만드는 ETL 스크립트를 Glue로 작성하고 있던 중이었다. 사실 기존에 유사한 작업으로 생성되어있는 Job이 있어 거기에서 조금만 고치면 되는데 그 Job은 SQL로 작성이 되어있었고, 2주의 넉넉한 기간이 주어졌고, 그래서 spark도 써 볼겸 pyspark으로 처음부터 작성해봤다. 처음에는 데이터 불러온 뒤 부터는 pandas처럼 쓰면 될 거라고 아주 가볍게 생각해서 이틀 컷이다 이러면서 spark도 깔아보고 이것 저것 해가면서 진행했는데 정말 생각대로 흘러가지 않았..