Category: Development

포트 포워딩 대신에 ngrok 사용하기

만약에, 내 컴퓨터가 공유기에 192.168.0.2의 아이피를 가지고 서버에서 25565 포트를 열었다고 합시다. 이 때, 공유기가 1.2.3.4 아이피를 가지고 있을때, 외부에서 1.2.3.4:25565로 접근하는 사람들에게 공유기가 어디로 신호를 보내줘야 할 지, 포트 포워딩을 해줘야지만 192.168.0.2:25565로 신호를 보내주는 것입니다. 이러한 과정은 결국 공유기에…

Continue reading

Docker로 손쉽게 Jupyter와 Spark 사용하기

이전에 윈도우(Windows) 10 환경에서 스파크(Spark)를 설치하는 방법에 대한 글을 작성한 적이 있었는데, 한 번 셋팅해놓고 잘 쓰다가 컴퓨터를 포맷한다거나 하면서 환경 구성이 바뀌면 여간 골치아픈 것이 아닙니다. 그래서 도커(Docker) 이미지를 이용해서 손쉽게 서버를 올렸다 내렸다 하면서 사용할 수 있는 환경…

Continue reading

VS Code로 AWS SAM에 대한 Remote 컨테이너 개발 환경 구축하기

AWS SAM으로 서버리스 아키텍처를 개발, 관리 그리고 배포하고자 개발 환경을 구축하면서 좌충우돌 했던 많은 시도와 과정을 글로 정리해보고자 합니다. VS Code를 사용하게 된 이유는, Lambda 함수에서 Python을 사용하려고 하니까 별 다른 선택지가 없었기 때문입니다. AWS Toolkit 플러그인은 여러 IDE에 걸쳐서…

Continue reading

Spark에서 Window 함수의 다양한 이용

스파크(Spark)에서 데이터 프레임을 다루다 보면, 다양한 함수들이 요구됩니다. 기본 함수들은 직관적으로 새로운 값을 생성하는 것에 초점을 맞추고 있습니다. 그런데, 많은 경우에 데이터 비교를 위해서 현재 행을 이전 행과 비교하기를 원합니다. 혹은 특정 컬럼에 대해서 Partiton된 데이터를 구하고 싶기도 합니다. 이럴…

Continue reading

Spark 작업 병렬로 처리하기

빅데이터 처리를 위해서 스파크(Spark)가 인기를 끈 이유는 대용량 데이터를 병렬로 처리할 수 있다는 것입니다. 그래서 스파크를 처음에 접했을 때는 모든 작업이 병렬로 처리된다는 생각을 하게 되고, 이 때문에 스파크는 항상 병렬 처리를 한다고 믿었습니다. 물론 이것은 사실입니다. 그런데, 아래와 같은…

Continue reading

Jupyter Lab에서 Spark 실행하기

스파크(Spark)로 개발을 하다보면 간단한 작업은 로컬에서 진행하고 싶은 경우가 있습니다. 겨우 이거 하나 하겠다고 스칼라(Scala)로 코드를 짜서 Jar를 만들고 스파크 클러스터에 작업을 제출하는 것은 너무나 불편하기만 합니다. 그래서 Jupyter Lab을 이용해서 간단한 스파크 코드를 작성하고 실행하는 과정을 소개하고자 합니다. 앞선…

Continue reading

윈도우에서 Jupyter Lab 설치하고 Boto3 사용하기

Python으로 간단한 코드를 돌려보려고 하는데, IDE를 통채로 설치해서 사용하자니 너무 큰 작업이 되는 것 같고, 매번 IDE를 통해서 실행하는 것도 귀찮고 해서 Jupyter Lab을 설치하기로 결정하였습니다. IPython 스타일의 Jupyter Notebook이 기본 셋팅이지만 저는 Lab의 형태를 더 선호해서 일단 Jupyter Notebook을…

Continue reading

EMR을 이용한 자동 Spark 배치 만들기

회사에서 많은 AWS 서비스를 사용해보면서 어느 날 번뜩 떠오른 아이디어가 있었습니다. 사실 전문가 분들은 이미 많이 사용하고 있는 것 같았지만 왠지 내가 대단한 발견이라도 한 것 같고 나름의 성취감도 있었지요. AWS의 EMR을 이용하여 Spark 배치 작업을 자동으로 실행하고 작업이 종료되면…

Continue reading