Data Engineering
-
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에 들어가기 때문에 ..
-
Comparing AWS messaging service - SNS vs SQS (AWS SNS vs SQS 비교, Slack 메세지 보내기 적합한 파이프라인 선택하기)Data Engineering/AWS, Spark 2023. 1. 18. 15:28
AWS SNS, SQS is the famous services which help to send event messages. Here, I will look through those two services and find which one is best for my pipeline. I'm writing this post for the pipeline that sending a Slack notification from AWS Elastic Beanstalk and S3 through Lambda function. Therefore, please be aware all comparision, listing, describing something in this post will focus on this ..
-
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..
-
Terraform Up & Running (3판 원서) : 1. Why Terraform (테라폼을 사용해야하는 이유)Data Engineering/Books 2022. 12. 18. 19:42
Datahub을 구축할 때 Terraform을 사용했는데 그냥 예제 코드 보고 배끼다 보니 코드에 대한 이해가 거의 없이 작성했다. 사실 코드가 굉장히 직관적이라 언어 수준이라기 보다는 라이브러리 수준인데, 인프라 구축할 때 활용하면 좋을 것 같아 간단히 스터디해보기로 했다. 원서이긴 하지만 실용서다보니 어려운 용어가 아예 없어 사전 없이도 읽을 수 있는 가벼운 책이다. 1장은 DevOps의 탄생과 코드로 인프라를 구축해야하는 이유에 대해서 간단히 설명한다. 이 책에 AWS와 테라폼을 사용한 책이다 보니 결론은 AWS와 테라폼이 왜 좋은지에 대해서 나열한 장이라 크게 비중을 두지 않고 가볍게 읽거나 그냥 지나가도 좋은 chapter이다. What Is DevOps?: DevOps의 탄생 과거 Dev(De..
-
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..
-
HA(High Availability)란?Data Engineering/분류하기 애매한 것들 2022. 12. 3. 21:24
EKS 쓰면서 HA라는 용어를 많이 읽었는데 난 처음에 무슨 기술 이름인 줄 알았다. 알고보니 High Availability의 줄임말이었다. Full Words를 알고 나니 왜 EKS를 볼 때 많이 보였는지 알 것 같았다. High Availability, 한국어로 고가용성이란 이상적으로는 영원하다 할 수 있는 긴 시간동안 계속해서 시스템이 운영될 수 있는 것을 의미한다. 쉽게 말해, 가용성이 높은 서버라는 것은 서버가 "가용"할 수 있는 수준이 "높다", 즉, 오랫동안 안 죽고 살아있다는 것을 의미한다. 고가용성이 매우 높으면 Five9 (99.999%)로 표현되기도 한다고 한다 (첨들어봄..) 현대의 시스템은 하나의 소프트웨어나 네트워크로 돌아가는 경우가 거의 없다. 따라서 연결되어 있는 모든 컴포..
-
처음 시작하는 마이크로서비스 + 헬름 배우기 : 쿠버네티스 정리Data Engineering/Books 2022. 8. 29. 01:02
Microservices Up & Running (처음 시작하는 마이크로서비스) (필요한 부분 먼저 읽고 요약 진행합니다. 전체적으로 실습 코드 위주의 도서라 개념 정리가 필요한 분들에게는 추천하지 않습니다.) Learn Helm (교보문고에서 슬쩍 읽고 구매했는데 더 좋은 책이 있으리라 믿습니다.. 번역 별로..) 7.1.1 Network (AWS 네트워크 관련 공식 문서) 가용영역 (Availability zone): 별도의 분리된 데이터 센터 VPC (Virtual Private Cloud): AWS 가상 네트워크의 상위 객체 VPC는 여러 개의 작은 네트워크인 서브넷으로 나뉠 수 있다. 서브넷은 네트워크 트래픽을 구성하고 리소스에 대한 엑세스를 제어한다 (VPC의 ip 주소 범위 결정). 예를 들..
-
[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도 깔아보고 이것 저것 해가면서 진행했는데 정말 생각대로 흘러가지 않았..