RDD vs DataFrame in Spark
·
데이터 엔지니어링
데이터 표현 방식RDD구조화되지 않은 데이터도 처리할 수 있음사용자 정의 함수를 통해 데이터 변환하는 데 유연DataFrameRDD 위에 구조화된 데이터 추가한 것행과 열로 이루어져 있으며 Pandas의 Dataframe과 유사명확한 스키마를 가지고 있기에 데이터 처리 및 변환이 직관적이고 효율적API 수준RDD낮은 수준의 API 제공사용자에게 더 많은 제어권 제공map, reduce, filter 등의 함수형 프로그래밍 연산자 이용해 변환DataFrame높은 수준의 API 제공SQL 쿼리와 유사한 방식으로 데이터 처리 -> 직관적최적화된 실행 계획을 통해 효율적으로 동작성능 최적화RDD사용자 정의함수를 사용하기에 최적화 여지가 적음실행 계획 최적화하지 않음DataFrameCatalyst Optimize..
스파크 RDD 이해하기
·
데이터 엔지니어링
Apache spark에서는 데이터를 다루기 위해 아래 3가지 추상화 개념을 제공합니다.RDD (Resilient Distributed Datasets)DataFramesDatasets이 중 RDD에 대한 설명과 예제를 통해 이해해보고자 합니다.정의RDD는 Spark의 기본 데이터 구조로 병렬로 처리할 수 있는 불변 분산 객체 컬렉션특징메모리 내에서 처리 연산을 지원함기존 map reduce 파일 시스템과 비교했을 때의 장점생성되면 수정할 수 없음기존 RDD를 수정하는 게 아니라 새로운 RDD를 생성함. (불변성)RDD는 장애로부터 쉽게 복구할 수 있음위 불변성 덕분에 RDD 복구가 쉽고 분산 환경에서 처리되기에 Node A에서 문제시 Node B에서 수행 가능함Laze EvaluationAction 연..
[책] 파이썬으로 살펴보는 아키텍처 패턴
·
📚책
CH0. 도입0.1. 설계가 왜 잘못되는가?시스템을 처음 구축할 때원대한 계획을 세움 (코드를 깔끔하게 질서 잡힌 상태로 유지하기 위해)하지만 시간이 지남에 따라 잘못 구현 or 엣지 케이스에 의해 망하게 됨0.2. 캡슐화와 추상화캡슐화행동의 단순화 & 데이터 감추기코드에 수행할 작업 식별 -> 객체나 함수를 부여추상화객체나 함수를 추상화라 함import requestsparsed = requests.get().json()잘 추상화 된 예시한단계 더 나아가면 작업을 식별하고 이름을 부여해서 더 높은 수준의 추상화를 할 수 있음import duckduckgoductductgo.query('Sausages').results책임 주도 설계 : 코드를 데이터나 알고리즘이 아니라 행동을 중심으로 생각0.3. 계층..
PlantUML 기초 사용법 (feat. vscode)
·
ETC
PlantUML이란?PlantUML은 UML(Unified Modeling Language) 다이어그램을 코드로 작성할 수 있게 해주는 도구입니다. 텍스트로 다이어그램을 정의하고 이를 다양한 형식의 이미지로 변환할 수 있습니다, 개발자들이 미적 감각에 대해 신경 쓸 필요없이 복잡한 다이어그램을 쉽게 그릴 수 있도록 돕습니다. UML 다이어그램뿐만 아니라 순서 다이어그램, 활동 다이어그램, 상태 다이어그램, 유스케이스 다이어그램 등 다양한 유형의 다이어그램을 지원합니다.왜 PlantUML을 사용할까요?단순함: 텍스트 기반으로 다이어그램을 정의할 수 있어 간단하고 직관적입니다.버전 관리: 텍스트 파일로 저장되므로 Git과 같은 버전 관리 시스템에서 쉽게 추적할 수 있습니다.자동화: 코드로 작성되기 때문에 스..
LangChain으로 똑똑한 Slack bot 만들기 (RAG)
·
언어모델
서비스를 하는 사람은 항상 고객이 필요하고 있다. 고객은 서비스에 대한 질문을 하고 서비스 담당자는 이에 대한 답변을 한다. 서비스가 커질수록 이에 소모되는 비용이 커진다.질문에 대한 답을 Bot이 할 수 있게 개발해보자.준비할 것LLM (Large Language Model) : 답변을 생성Chat History : 질문에 대한 답변 기록VectorDB : Chat History를 저장Slack Bot : 질문을 받고 LLM에 요청을 보낸 뒤 답변을 반환앞으로 만들 Slack Bot은 그림과 같이 아래와 같은 Step을 갖는다. 1. 채팅 히스토리를 벡터화해서 VectorDB에 넣는다. 2. Slack Bot으로 들어온 질문을 벡터화한다. 3. 유사한 히스토리를 VectorDB로 부터 찾는다. 4. 찾..
파이썬의 Linter이자 Formatter, Ruff 사용해보기
·
Python
flake8을 린터로 사용하고 black을 코드포매터로 사용하고 있는데 ruff는 이 두가지 역할을 모두하며 매우 빠르다. (추가로 isort도 사용하는데, ruff를 사용하면 다 대체 가능)그냥 ruff 만을 사용하면 되는 수준이다.그리고 다양한 곳에서 사용중이다. (검증이 되었단 소리)Apache AirflowApache SupersetFastAPIHugging FacePandasSciPyGithub Star 수도 급격히 증가하고 있다.1. 설치pip를 통해 간단히 설치할 수 있다.pip install ruff2. 사용법Checkruff위는 명령어는 현재 디렉토리 하위의 .py 파일을 검사한다.check가 생략된 것으로 검사만을 수행한다.Fixruff --fixcheck된 내용을 알아서 수정해준다.3..
완전 쉬운 Redis, Kafka를 위한 Upstash 소개
·
Kafka
서론랭체인 완벽입문 책을 읽다가 redis를 쉽게 이용할 수 있는 upstash 라는 서비스를 알게되었습니다.https://upstash.com/ 를 확인해보니 Redis 뿐만 아니라 Kafka, VectorDB, QStash(?)가 사용 가능한 것을 보고 궁금해져서 사용해보며 글을 남기고자 합니다.가격upstash는 완전 관리형 서비스로 앞서 언급한 서비스를 관리해줍니다. 전부 무료는 당연히 아니고 가격 정책이 있었습니다.(QStash는 Upstash의 스케줄러 & 메시징큐를 위한 서비스)Service공짜쓴만큼 지불Redis10,000 Request Per Day$0.2 per 100kKafka10,000 Request Per Day$0.6 per 100kVector10,000 Request Per D..
랭체인 완벽 입문
·
언어모델
https://www.yes24.com/Product/Goods/124922985책 내용 중 기록하고 싶은 내용을 작성합니다.1. 챗지피티와 랭체인기존에는 용도별로 각각의 모델을 준비해야 했지만, GPT는 엄청나게 많은 다양한 종류의 텍스트로 학습해 다양한 작업에 댕응할 수 있는 언어 모델이다.언어 모델을 크게 두가지로 분류됨Chat : 대화형 상호작용 생성에 특화된 모델Complete : 주어진 텍스트에 이어 텍스트를 생성모델 별 허용 컨텍스트gpt-3.5-turbo-16k : 16k의 컨텍스트 길이를 처리할 수 있음suffix가 없으면 일반적으로 4kgpt-3.5-turbo-0613 와 같이 날짜가 suffix로 있는 경우는 특정 버전으로 고정된 것API 요금은 송신 입력 토큰과 수신 출력 토큰에 모..