【GitHub每日速递 20260109】Python ETL新宠!Pathway实时数据框架,性能吊打Flink、Spark!

0 阅读6分钟

原文:mp.weixin.qq.com/s/Shc9Eoenf…

Python ETL新宠!Pathway实时数据框架,性能吊打Flink、Spark!

[pathway] 是一个用于流处理、实时分析、LLM管道和RAG的Python ETL框架。简单讲,它能帮助开发者用Python高效处理实时数据流并构建大模型应用。适用人群:数据工程师、AI开发者、需要实时数据处理能力的技术团队。

项目地址:github.com/pathwaycom/…

主要语言:Python

stars: 55.9k

image.png

仓库简介

Pathway 是一个用于流处理、实时分析、大语言模型(LLM)管道和检索增强生成(RAG)的 Python ETL 框架。它拥有易于使用的 Python API,能无缝集成各类 Python ML 库,代码可在开发和生产环境中使用,有效处理批量和流式数据。该框架由基于 Differential Dataflow 的可扩展 Rust 引擎提供支持,能执行增量计算,所有管道都保存在内存中,可通过 Docker 和 Kubernetes 轻松部署。

核心功能

  • 流处理与实时分析:适用于事件处理和实时分析管道,如实时 ETL、事件驱动的警报管道、实时分析等。
  • LLM 管道与 RAG:提供专门的 LLM 工具,可构建实时 LLM 和 RAG 管道,包含常见 LLM 服务的包装器和实用工具。
  • 数据连接:具备多种连接器,可连接 Kafka、GDrive、PostgreSQL、SharePoint 等外部数据源,通过 Airbyte 连接器能连接 300 多种不同数据源,也可自定义连接器。
  • 数据转换:支持无状态和有状态的转换,如连接、窗口化和排序,许多转换直接在 Rust 中实现,也可使用任意 Python 函数。
  • 持久化:提供持久化功能,可保存计算状态,便于在更新或崩溃后重启管道。
  • 一致性处理:自动处理时间问题,确保计算结果的一致性,能处理延迟和乱序数据点,免费版提供“至少一次”一致性,企业版提供“恰好一次”一致性。
  • LLM 辅助工具:提供 LLM 扩展,包含集成 LLM 与数据管道所需的实用工具,如 LLM 包装器、解析器、嵌入器、拆分器,以及内存中的实时向量索引,还集成了 LlamaIndex 和 LangChain。

优势

  • 易用性:提供简单的 Python API,方便用户使用,可轻松集成喜欢的 Python ML 库。
  • 通用性:同一代码可用于本地开发、CI/CD 测试、批量作业、流重放和数据流处理。
  • 高性能:由 Rust 引擎驱动,支持多线程、多进程和分布式计算,能突破 Python 的限制。
  • 可扩展性:适用于不同规模的项目,企业版支持分布式计算和 Kubernetes 部署。
  • 监控方便:自带监控仪表盘,可跟踪每个连接器发送的消息数量和系统延迟,还包含日志消息。

应用场景

  • 实时数据分析:处理实时数据流,进行实时分析和决策。
  • LLM 应用开发:构建 LLM 管道和 RAG 应用,实现实时问答、智能客服等功能。
  • 数据集成与 ETL:从不同数据源提取、转换和加载数据。

安装与使用

  • 安装:使用 pip install -U pathway 进行安装,要求 Python 3.10 或更高版本,支持 MacOS 和 Linux,其他系统需在虚拟机上运行。
  • 示例代码:以下是一个实时计算正数之和的示例:
import pathway as pw

# Define the schema of your data (Optional)
class InputSchema(pw.Schema):
    value: int

# Connect to your data using connectors
input_table = pw.io.csv.read(
    "./input/",
    schema=InputSchema
)

# Define your operations on the data
filtered_table = input_table.filter(input_table.value >= 0)
result_table = filtered_table.reduce(
    sum_value=pw.reducers.sum(filtered_table.value)
)

# Load your results to external systems
pw.io.jsonlines.write(result_table, "output.jsonl")

# Run the computation
pw.run()

部署方式

  • 本地部署:导入 pathway 库,创建处理管道,使用 pw.run() 启动计算,可像普通 Python 脚本一样运行,也可使用 pathway spawn 命令,支持多线程。
  • Docker 部署:可使用 Pathway 官方 Docker 镜像,也可使用标准 Python 镜像并安装 Pathway,支持单文件项目直接执行 Python 脚本。
  • Kubernetes 和云部署:适合在云环境中使用 Kubernetes 部署,企业版支持分布式计算和外部持久化设置,也可使用 Render 等服务轻松部署。

文档与支持

合作与集成

与 Databento、LangChain、LlamaIndex、MinIO、PaddleOCR、Redpanda 等项目合作,共同推动数据工程的发展。

OpenBB开源数据平台:打通多源数据,助力金融分析与AI应用!

[OpenBB] 是一个提供金融数据分析与集成的平台。简单讲,它是一个开源的金融数据工具,帮助分析师、量化交易员和AI代理获取、处理和分析金融市场数据。适用人群:金融分析师、量化开发者、AI研究人员

项目地址:github.com/OpenBB-fina…

主要语言:Python

stars: 56.4k

image.png

核心功能

Open Data Platform by OpenBB (ODP) 是一个开源工具集,主要帮助数据工程师将专有、授权和公共数据源集成到下游应用程序,如 AI 助手和研究仪表盘。它作为“一次连接,随处使用”的基础设施层,能将数据整合并同时暴露到多个平台,包括供量化分析师使用的 Python 环境、供分析人员使用的 OpenBB Workspace 和 Excel、供 AI 代理使用的 MCP 服务器,以及供其他应用程序使用的 REST API。

代码架构特点

文档未明确提及具体的代码架构特点,但从功能描述来看,它采用模块化设计,不同数据来源和下游应用对应不同模块,保证了扩展性和兼容性。同时,它与 OpenBB Workspace 无缝集成,体现出良好的分层架构。

主要优势

  • 数据整合优势:支持多种数据源整合,无论是专有数据、授权数据还是公共数据,都能通过 ODP 进行统一管理和使用。
  • 多平台支持:可将数据提供给多种应用场景,满足不同用户的需求,包括量化分析师、普通分析人员、AI 开发者等。
  • 开源特性:开源的特性使得开发者可以根据自身需求进行定制和扩展,同时也能借助社区的力量不断完善。

应用场景

  • 量化分析:量化分析师可以在 Python 环境中使用 ODP 提供的数据进行投资策略的开发和回测。
  • 数据分析:分析人员可以通过 OpenBB Workspace 可视化数据集,进行数据探索和分析。
  • AI 开发:AI 开发者可以利用 ODP 提供的数据训练 AI 模型,为金融领域的智能决策提供支持。
  • 其他应用开发:通过 REST API,其他应用程序可以方便地获取 ODP 中的数据,实现数据的共享和复用。

安装方式

  • ODP Python 包:可通过 pip install openbbPyPI 包 安装,也可通过 git clone <https://github.com/OpenBB-finance/OpenBB.git> 直接克隆仓库。更多安装过程可参考 OpenBB 文档
  • ODP CLI:可通过 pip install openbb-cli 安装,也可通过克隆仓库安装,更多安装过程可参考 OpenBB 文档