[Spark] PySpark의 기본 데이터 가공 프로세스
데이터 이모저모/Spark2024. 1. 3. 02:52[Spark] PySpark의 기본 데이터 가공 프로세스

🧐 개요 이번 포스트에서는 데이터프레임 가공 과정에서 가장 기본적으로 사용되는 PySpark 로직을 설명하고자 합니다. PySpark의 기본적인 가공 로직들은 다양한 분야 및 데이터 기반의 프로젝트에서 반복적으로 사용되는 내용이지만, 구현 방식이 다채롭고 활용 범위가 넓다보니 꾸준히 사용하지 않으면 빠르게 잊혀지고 내용을 잘못 기억하게 되더군요(내 기억력의 문제인가..). 이를 개인적으로 예방하고 필요한 시기에 찾아볼 수 있도록 하는 차원에서 포스트를 작성합니다. 📁 파일 데이터 불러오기 # read json files df = spark.read.option("multiline", "true").json("") # read csv files df = spark.read.csv("", header=Tru..

[주저리] Kafka는 발행된 메세지의 데이터 타입을 기억할까? (JSON과 string의 비교)
데이터 이모저모/Kafka2024. 1. 2. 02:39[주저리] Kafka는 발행된 메세지의 데이터 타입을 기억할까? (JSON과 string의 비교)

🧐 개요 Apache Kafka 환경에 발행된 메세지는 자동으로 인코딩(직렬화)됩니다. 일전에 Spark Streaming 앱에서 수신한 Kafka 메세지에서 CAST를 진행해주었던 이유도 직렬화 된 데이터를 문자열로 변환시켜주기 위해서였죠. 발행된 메세지를 재사용하기 위해서는 적절한 디코딩을 통해 데이터를 읽기 및 쓰기가 가능한 포맷으로 바꾸어주어야 합니다. Kafka 내부적으로 디폴트로 사용되는 인코더가 있지만 사용자가 직접 Serializer 객체를 정의하여 인코딩을 수행할 수도 있습니다. confluent-kafka 모듈을 학습하던 도중 궁금해졌던 부분은 JSON 데이터의 처리였습니다. 구체적으로는 "Kafka는 str(dict) 데이터와 json.dumps(dict).encode('utf-8'..

[Docker] Dockerfile로 FastAPI 서비스 배포하기
백엔드 이모저모/Docker2024. 1. 1. 18:41[Docker] Dockerfile로 FastAPI 서비스 배포하기

🧐 개요 이번 포스트는 Dockerfile로 FastAPI 서비스를 배포하는 예제를 다루어보도록 하겠습니다. 사실 FastAPI는 스크립트 내용 변화를 업데이트하려면 앱을 종료 후 재실행해야 하기 때문에 컨테이너로 배포하는 것에 큰 메리트가 없습니다. 하지만 서비스 배포 차원에서 설치해야 할 모듈들이 많을 경우, Docker 가상 환경에 분리할 수 있다는 이점이 있어서 개인적으로는 프로젝트 단위에서 종종 사용하였습니다. 🌲 File Tree 구조 . ├── apt-requirements.txt ├── Dockerfile ├── fastapi │ └── main.py ├── pip-requirements.txt └── README.md 서비스 배포를 위한 File Tree의 구조입니다. Dockerfile..

백엔드 이모저모/FastAPI2023. 12. 29. 04:26[FastAPI] 미들웨어(MiddleWare) 구성을 통한 시스템 로그 관리 - 작성중

🧐 개요 이번 포스트는 Python 기반의 프레임워크인 FastAPI 내부에 미들웨어를 구성하여 시스템 로그를 관리하는 방법을 설명합니다. 미들웨어(MiddleWare)의 개념 미들웨어(middleware)란? 개념, 종류, 필요성 미들웨어란 운영 체제에서 제공하지 않는 일반적인 서비스와 기능을 애플리케이션에 제공하는 소프트웨어를 뜻하며, 개발자와 운영자가 애플리케이션을 효율적으로 구축하고 배포하도록 지원 www.redhat.com 미들웨어는 클라이언트와 서버 사이에 위치하는 구성 요소입니다. 간략화하여 설명하면, 클라이언트의 요청에 대한 응답이 생성되고 전송되기까지의 과정 사이에서 중간 결과물 및 상태값을 가지고 독립적인 작업을 수행할 수 있습니다. 해당 포스트에서 만든 미들웨어는 FastAPI 서버 ..

[Python] No module named 'distutils' 에러 해결하기
프로그래밍 이모저모/Python2023. 12. 28. 23:57[Python] No module named 'distutils' 에러 해결하기

🧐 개요 No module named 'distutils' 이번 포스트에서는 Python 환경에서 발생하는 No module named 'distutils' 에러를 해결하는 방법을 짧게 소개합니다. 🛠️ 해결 방법 아래의 명령어를 통해 'setuptools'를 설치하여 해당 에러를 해결할 수 있습니다. pip install setuptools 'distutils'은 Python 내에 내장되어 있'던' 패키지 관리 도구입니다. 객체 지향 언어인 Python은 필요한 기능을 구현하여 패키징 및 모듈화를 수행하고 이를 공유할 수 있는데, 'distutils'는 이러한 패키지 빌드 및 빌드 과정에서의 작업들을 추상화하여 더욱 단순하게 동작할 수 있도록 도와줍니다. 오픈 소스에서, 또는 그룹에 의해 개발된 일부 ..

[PostgreSQL] 데이터베이스 백업 및 S3 업로드
데이터 이모저모/SQL2023. 12. 27. 23:58[PostgreSQL] 데이터베이스 백업 및 S3 업로드

🧐 개요 이번 포스트는 PostgreSQL 데이터베이스의 백업본을 생성하고 S3 스토리지에 업로드하는 방법을 설명합니다. AWS와 같은 대규모 클라우드 서비스들은 RDS 데이터베이스에 대한 백업 스냅샷을 주기적으로 생성하여 언제든지 데이터베이스를 백업할 수 있도록 기술적으로 지원하고 있습니다(해당 데이터를 외부로 이관할 수 있도록 s3 스토리지에 스냅샷을 업로드할 수도 있죠). 그런데 이러한 서비스들이 포함되어 있기 때문에 동일 사양의 인스턴스 대비 청구되는 비용이 높다는 단점이 있습니다. 다행히도, 대부분의 RDBMS 시스템은 데이터베이스를 백업 및 복원하기 위한 자체 기능을 내장하고 있습니다. 따라서 이번 포스트는 PostgreSQL의 자체 내장 기능을 사용하여 AWS의 스냅샷 기능을 벤치마킹 하도록..

image