본문 바로가기

Category

(130)
[Docker] 도커 컨테이너에서 포트 포워딩 설정하기 (+ 💁‍♂️Apache Livy를 사용한 예시) 도커에서는 컨테이너를 실행할 때 포트 포워딩을 설정할 수 있다. 하지만 컨테이너에 여러 소프트웨어를 설치하다 보면 포트 설정을 추가해야 할 때가 있다. 나의 경우 다음과 같은 상황이었다. 다른 컨테이너에서 Ubuntu 컨테이너의 Spark Job을 실행시키기 위해 Apache Livy를 설치 이후 Livy Web UI를 확인하기 위해 8998 포트를 추가 설정 필요 처음에는 단순히 새로운 컨테이너를 만들어야 하나 생각했지만 이 경우 자바, 파이썬, 스파크 등 기존에 설치된 많은 프로그램을 재설치해야 한다는 복잡한 일이 생긴다. * 포트 포워딩: 네트워크에서 특정 포트로 들어오는 트래픽을 다른 포트로 전송하는 메커니즘. 내부 서비스에서 외부 서비스에 접속하거나 그 반대의 경우에 사용. ✔ docker co..
[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..
[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 필드에 ..
[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..
[Spark] Apache Spark의 Execution Plan에 대해 알아보자 🙋‍♂️ Apache Spark 빅데이터 처리를 위한 통합 컴퓨팅 엔진이다. 하드 디스크가 아닌 RAM에 데이터를 보관하고 병렬로 처리하는 인메모리 기반 연산이 가능하다. 다양한 언어(파이썬, 자바, 스칼라,R, SQL)를 지원한다. 자세한 내용은 이 글에서 확인 💡 Spark의 실행 계획이란? Spark에서 SQL 쿼리, 데이터 프레임, 데이터 셋을 최적화해 처리하는 방식을 설명한다. Spark에서 최적화 프로그램의 이름은 Catalyst이며 아래 과정과 같이 나타낼 수 있다. 각 과정에서는 논리적 계획과 물리적 계획을 만들며 이는 마스터 노드(Driver)에서 생성한다. 1) Logical Plan 사용자가 작성한 쿼리를 논리적인 단계로 표현. ✔ Unresolved Logical Plan 쿼리 분석 과정에서..
[Spark] Docker Ubuntu 컨테이너에 Apache Spark를 설치해보자 우분투 설치 docker pull ubuntu docker images * 도커 이미지 삭제하기: docker rmi [IMAGE ID] 컨테이너 실행 docker run -itd --name spark ubuntu /bin/sh 컨테이너 실행 시 docker run -itd 옵션을 사용 -i (--interactive): 컨테이너의 표준입력(stdin) 활성화 (주로 -it 와 같이 사용) -t (--tty): TTY 모드 사용. 키보드를 통해 표준입력(stdin) 전달 (주로 -it 와 같이 사용) -d (--detach): 컨테이너를 백그라운드로 실행 docker exec 명령어 실행 docker exec -it spark /bin/bash * 재시작시 docker start [name] 사용 ex..
데이터 엔지니어링 컨퍼런스 4회 후기 (🚀feat. 실리콘밸리에서 날아온 데이터 엔지니어링 스터디) 지난 토요일 기용님(MAX)이 주최하신 데이터 엔지니어 네트워킹 행사에 다녀왔다. 행사 이름은 GREat PeoPle Data Engineering Conference로 벌써 네 번째 진행하는 행사였다. 처음 다녀온 데이터 엔지니어 행사여서 후기를 남겨보려 한다. 참가 신청과 준비 사항 나는 프로그래머스 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python 9기에 참여했었고 8월에 메일로 행사 소식을 전달받아 신청하게 되었다. 별도의 참가비는 없었고 네트워킹 행사기 때문에 명함을 많이 가져오거나, LinkdIn App을 설치 후 QR code를 준비해 달라는 공지가 있었다(앱을 설치하면 아래처럼 검색창에서 QR코드를 찾을 수 있다🙋‍♂️). 컨퍼런스 당일 처음 가보는 곳이라 10분 정..
[PYTHON] shallow copy와 deep copy를 알아보자 🌱 가변객체 파이썬의 객체는 가변객체(mutable)와 불변(immutable) 객체로 나뉜다. 가변객체에는 list, set, dict 등이 있으며, 불변객체와 달리 값을 수정하더라도 메모리주소가 바뀌지 않는다는 특징이 있다. 가변객체를 copy 할때의 주의사항과 shallow copy, deep copy에 대해 알아보자. copy a_list를 만든 후 b_list에 할당하고 메모리 주소값을 출력해 보았다. a_list = [1, 2, 3, [4, 5, 6], [7, 8, 9]] b_list = a_list print('Ex1 > ', id(a_list)) print('Ex1 > ', id(b_list)) # Ex1 > 2736207102336 # Ex1 > 2736207102336 b_list[2] =..