Category(121)
-
[PROJECT] 나만의 작고 소중한 데이터 파이프라인 만들기🌱 | 책방 사장님의 큐레이션을 위한 대시보드 구축기
지난 2월 퇴근 후 조금씩 시간을 내 작은 프로젝트를 진행했다. 회사에서는 이미 만들어진 빅데이터 플랫폼 위에서 운영업무를 하다 보니 파이프 라인을 비슷하게나마 직접 만들어보고 싶다는 마음에서부터였다. 데이터는 한번 사용해봐서 익숙한 도서 데이터를 선택했고, 주제는 책방 사장님의 큐레이션을 위한 도서 데이터 대시보드 구축으로 정했다. 이번 글에서는 프로젝트의 과정을 되돌아보고 회고를 남겨볼까 한다. 🙋♂️ 프로젝트 과정 프로젝트는 Docker 환경에서 진행하였고 프로세스를 자동화할 수 있도록 Apache Airflow를 사용했다. 데이터는 온라인 서점 알라딘의 Open API를 활용했다. 개발 환경 및 프로세스는 다음과 같다. 개발 환경 docker 4.7.0 spark 3.3.4 airflow 2.8..
2024.03.09 -
[Docker] 도커 컨테이너에서 포트 포워딩 설정하기 (+ 💁♂️Apache Livy를 사용한 예시)
도커에서는 컨테이너를 실행할 때 포트 포워딩을 설정할 수 있다. 하지만 컨테이너에 여러 소프트웨어를 설치하다 보면 포트 설정을 추가해야 할 때가 있다. 나의 경우 다음과 같은 상황이었다. 다른 컨테이너에서 Ubuntu 컨테이너의 Spark Job을 실행시키기 위해 Apache Livy를 설치 이후 Livy Web UI를 확인하기 위해 8998 포트를 추가 설정 필요 처음에는 단순히 새로운 컨테이너를 만들어야 하나 생각했지만 이 경우 자바, 파이썬, 스파크 등 기존에 설치된 많은 프로그램을 재설치해야 한다는 복잡한 일이 생긴다. * 포트 포워딩: 네트워크에서 특정 포트로 들어오는 트래픽을 다른 포트로 전송하는 메커니즘. 내부 서비스에서 외부 서비스에 접속하거나 그 반대의 경우에 사용. ✔ docker co..
2024.02.08 -
[Spark] Ubuntu 컨테이너에서 PySpark로 Amazon S3 데이터 읽어오기
지난 글과 이어집니다 Airflow DAG로 Amazon S3에 파일 업로드하기 (+📚 알라딘 Open API 예제) Airflow DAG를 사용해 파일을 Amazon s3에 업로드해보자. 💁♂️ Docker로 Apache Airflow 설치하는 방법은 아래 글 참고 Docker로 Apache Airflow 설치하기 (with 공식 문서🧐)데이터 파이프라인의 자동화를 구 donghae0230.tistory.com Spark v3.3.4 JAR 다운로드 S3A와의 연동을 위한 aws-java-sdk-bundle 및 hadoop-aws JAR 파일 다운로드 wget wget https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.1026..
2024.02.02 -
[Airflow] Amazon S3에 파일 업로드하기 (+📚 알라딘 Open API 예제)
Airflow DAG를 사용해 파일을 Amazon s3에 업로드해보자. *Docker로 Apache Airflow 설치하는 방법은 아래 글 참고 Docker로 Apache Airflow 설치하기 (with 공식 문서🧐) 데이터 파이프라인의 자동화를 구현해보고 싶어 Airflow에 대해 알아보았다. Apache Airflow Airflow is a platform to programmatically author, schedule and monitor workflows. Airflow는 Python 프로그래밍 언어를 통해 워크 donghae0230.tistory.com 1) AWS S3 버킷 생성 2) Airflow Connection 생성 Amazon Web Services를 선택한 후 Extra 필드에 ..
2024.01.24 -
[PYTHON] nonlocal variable 이해하기 (+예제)🌱
nonlocal variable outer function 안이면서 inner function 밖의 영역의 변수 (local도 global도 아닌 nonlocal) python에서는 외부 영역의 변수에 대해 읽기는 가능하나 쓰기는 제한적 이때 nonlocal 예약어를 사용하면 inner function에서 nonlocal variable 수정 가능 # nonlocal 사용 예시 def outer(): temp = 10 def inner(): nonlocal temp temp += 10 print(temp) inner() print(temp) outer() # 20 # 20 ✔ 예제) 프로그래머스 모음 사전 def solution(name): temp = ['A', 'E', 'I', 'O', 'U'] co..
2024.01.12