# Pathway: 스트림 데이터 처리 및 실시간 분석을 위한 Python ETL 프레임워크

**URL:** <https://discuss.pytorch.kr/t/pathway-python-etl/4646>\
**Category:** 읽을거리&정보공유\
**Tags:** rag, data-pipeline, python-library, pathway, data-etl\
**Created:** [6월 15, 2024, 2:17오후 UTC](https://discuss.pytorch.kr/t/pathway-python-etl/4646 "2024-06-15T14:17:11Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![9bow](https://discuss.pytorch.kr/user_avatar/discuss.pytorch.kr/9bow/32/16301_2.png) [@9bow](https://discuss.pytorch.kr/u/9bow)\
**Post date:** [6월 15, 2024, 2:17오후 UTC](https://discuss.pytorch.kr/t/pathway-python-etl/4646/1 "2024-06-15T14:17:12Z")

</div>

# Pathway: 스트림 데이터 처리 및 실시간 분석을 위한 Python ETL 프레임워크

## 소개

 ![Pathway: 스트림 데이터 처리 및 실시간 분석을 위한 Python ETL 프레임워크](https://discuss.pytorch.kr/uploads/default/original/2X/4/4e5cfe6d046272bd6ad493f31a66595926d6fa54.png)

Pathway는 스트림 데이터 처리와 실시간 분석을 위한 Python 기반의 ETL 프레임워크로, 개발 환경과 프로덕션 환경 모두에서 사용하기 적합합니다. Python으로 작성된 코드는 Rust 엔진을 통해 실행되어 멀티스레딩, 멀티프로세싱 및 분산 컴퓨팅을 지원합니다.

Pathway는 Docker와 Kubernetes를 통해 쉽게 배포할 수 있어 확장성이 뛰어나며, 다양한 데이터 소스와의 연결을 지원합니다. 특히, LLM 파이프라인 구축을 위한 도구를 제공하여, 데이터 처리 파이프라인을 손쉽게 만들 수 있습니다.

Pathway는 Apache Flink, Apache Spark, Kafka Streams와 같은 기존의 스트리밍 및 배치 데이터 처리 기술과 비교해 뛰어난 성능을 자랑합니다. Pathway는 일관성 있는 데이터 처리를 보장하며, 지연 데이터와 순서가 어긋난 데이터도 효과적으로 처리합니다. Python의 한계를 극복한 Rust 엔진 덕분에, 멀티스레딩과 분산 컴퓨팅이 용이합니다.

## 주요 기능

- **다양한 커넥터** : Kafka, GDrive, PostgreSQL, SharePoint 등 다양한 외부 데이터 소스와의 연결을 지원합니다. Airbyte 커넥터를 통해 300개 이상의 데이터 소스에 연결할 수 있습니다.

- **상태 저장 및 무상태 변환** : 조인, 윈도잉, 정렬과 같은 상태 저장 변환을 지원하며, 직접 구현한 변환을 포함한 다양한 Python 라이브러리를 사용할 수 있습니다.

- **영속성** : 계산 상태를 저장하여 업데이트나 장애 발생 후에도 파이프라인을 재시작할 수 있습니다.

- **일관성** : Pathway는 모든 계산이 일관되도록 시간을 관리하며, 무료 버전은 "최소 한 번" 일관성을, 엔터프라이즈 버전은 "정확히 한 번" 일관성을 제공합니다.

- **확장 가능한 Rust 엔진** : Pathway의 Rust 엔진은 멀티스레딩, 멀티프로세싱 및 분산 컴퓨팅을 지원합니다.

- **LLM 도우미** : LLM 래퍼, 파서, 임베더, 스플리터 등의 도구를 제공하여 LLM 파이프라인을 쉽게 구축하고 배포할 수 있습니다.

## 사용 사례 및 템플릿: 실시간 이벤트 처리 및 RAG 파이프라인 통합

Pathway는 다양한 데이터 처리 파이프라인을 쉽게 구성할 수 있는 도구를 제공합니다.

### 이벤트 처리 및 실시간 분석 파이프라인

- [실시간 ETL](https://pathway.com/developers/showcases/kafka-etl)

- [이벤트 기반 파이프라인](https://pathway.com/developers/showcases/realtime-log-monitoring)

- [실시간 분석](https://pathway.com/developers/showcases/linear_regression_with_kafka/)

### 라이브 LLM 및 RAG 파이프라인

- [LLM 기반 데이터 파이프라인](https://pathway.com/developers/showcases/llm-alert-pathway/)

- [비정형 데이터를 SQL로 변환](https://pathway.com/developers/showcases/unstructured-to-structured/)

- [프라이빗 RAG](https://github.com/pathwaycom/llm-app/tree/main/examples/pipelines/private-rag)

- [적응형 RAG](https://github.com/pathwaycom/llm-app/tree/main/examples/pipelines/adaptive-rag)

- [멀티모달 RAG](https://github.com/pathwaycom/llm-app/tree/main/examples/pipelines/gpt_4o_multimodal_rag)

## 사용 방법

### 설치 방법

Pathway는 Python 3.10 이상이 필요합니다. `pip`를 사용하여 설치할 수 있습니다:

```bash
pip install -U pathway

```

### 실시간 긍정 값의 합 계산 예제

```python
import pathway as pw

class InputSchema(pw.Schema):
  value: int

input_table = pw.io.csv.read("./input/", schema=InputSchema)
filtered_table = input_table.filter(input_table.value >= 0)
result_table = filtered_table.reduce(sum_value=pw.reducers.sum(filtered_table.value))

pw.io.jsonlines.write(result_table, "output.jsonl")
pw.run()

```

### 로컬에서 실행

Pathway를 사용하려면, `import pathway as pw`로 임포트한 후 파이프라인을 생성하고 `pw.run()`으로 실행합니다.

```python
import pathway as pw
pw.run()

```

### Docker 및 kubernetes에서의 실행 가능

Docker를 사용하여 Pathway를 실행할 수 있습니다. Pathway Docker 이미지를 사용하여 Dockerfile을 작성하고, 이미지를 빌드하고 실행합니다.

Docker Image를 생성한 뒤에는 로컬 또는 k8s 등에서 배포할 수 있습니다.

## 라이선스

이 프로젝트는 [BSL 1.1 라이선스](https://github.com/pathwaycom/pathway/blob/main/LICENSE.txt)로 공개 및 배포되고 있습니다. Pathway 패키지는 대부분의 상업적 목적을 무료로 사용할 수 있으며, 4년 후에는 Apache 2.0 라이선스로 자동 전환됩니다.

## 더 읽어보기

### :github: Pathway GitHub 저장소

> **[GitHub - pathwaycom/pathway: Python ETL framework for stream processing,...](https://github.com/pathwaycom/pathway)**
>
> Python ETL framework for stream processing, real-time analytics, LLM pipelines, and RAG.

### 📚 Pathway 공식 문서

> **[Welcome | Pathway](https://pathway.com/developers/user-guide/introduction/welcome/)**
>
> Welcome to the Pathway developer hub

### LLM xpack 문서

> **[Introduction to the LLM xpack | Pathway](https://pathway.com/developers/user-guide/llm-xpack/overview/)**
>
> Introduction to the Pathway LLM xpack

* * *

_이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다._ 🤗

[:pytorch:파이토치 한국 사용자 모임🇰🇷](https://pytorch.kr/)이 정리한 이 글이 유용하셨나요? [회원으로 가입](https://discuss.pytorch.kr/signup)하시면 주요 글들을 이메일💌로 보내드립니다! (기본은 Weekly지만 [Daily로 변경도 가능](https://discuss.pytorch.kr/my/preferences/emails)합니다.)

🎁 아래↘쪽에 좋아요👍를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ 🤩
