跳转到主要内容

从磁盘上的文件到完整分发API的datapipelines开发框架

项目描述

Maggma

Static Badge testing codecov python

什么是Maggma

Maggma是一个框架,用于从存储在多种格式(数据库、Azure Blob、磁盘上的文件等)中的数据构建科学数据处理管道,一直到最后是REST API。本README的其余部分包含对maggma能做什么的简要、高级概述。更多内容请参阅文档

从PyPI安装

Maggma发布在Python包索引上。从PyPi安装包的首选工具是pip。此工具随所有现代Python版本提供。

打开终端并运行以下命令。

pip install --upgrade maggma

基本概念

maggma的核心类--StoreBuilder--提供了模块化数据管道的构建块。数据存储在一个或多个Store中,并由Builder进行处理。处理结果保存在另一个Store中,依此类推

flowchart LR
    s1(Store 1) --Builder 1--> s2(Store 2) --Builder 2--> s3(Store 3)
s2 -- Builder 3-->s4(Store 4)

Store

构建可扩展数据管道的主要挑战之一是处理所有不同类型的数据源。Maggma的Store类提供了一个一致的、统一的接口,用于从任意数据源查询数据。它最初是围绕MongoDB构建的,因此其接口与PyMongo语法非常相似。然而,Maggma使得可以使用相同的语法查询其他类型的数据库,例如Amazon S3、GridFS或磁盘上的文件等,以及其他许多数据库。Store实现方法以连接connect、查询query、查找distinct值、按字段groupby、更新文档update和删除文档remove

以下示例演示了使用update将4个文档(python dicts)插入到MongoStore中,然后使用countquerydistinct访问数据。

>>> turtles = [{"name": "Leonardo", "color": "blue", "tool": "sword"},
               {"name": "Donatello","color": "purple", "tool": "staff"},
               {"name": "Michelangelo", "color": "orange", "tool": "nunchuks"},
               {"name":"Raphael", "color": "red", "tool": "sai"}
            ]
>>> store = MongoStore(database="my_db_name",
                       collection_name="my_collection_name",
                       username="my_username",
                       password="my_password",
                       host="my_hostname",
                       port=27017,
                       key="name",
                    )
>>> with store:
        store.update(turtles)
>>> store.count()
4
>>> store.query_one({})
{'_id': ObjectId('66746d29a78e8431daa3463a'), 'name': 'Leonardo', 'color': 'blue', 'tool': 'sword'}
>>> store.distinct('color')
['purple', 'orange', 'blue', 'red']

Builder

Builder代表一个数据处理步骤,类似于数据仓库模型中的提取-转换-加载(ETL)操作。与Store提供访问数据的一致接口一样,Builder类提供了一致的数据转换接口。Builder转换分为三个阶段:get_itemsprocess_itemupdate_targets

  1. get_items:从源Store检索项目以便下一阶段进行处理
  2. process_item:操作输入项目并创建一个输出文档,该文档被发送到下一阶段以进行存储。
  3. update_target:将处理后的项目添加到目标Store。

get_itemsupdate_targets都可以对数据存储执行IO(输入/输出)。process_item预期不执行任何IO,以便Maggma可以对其进行并行处理。Builder可以链接到一个数组中,然后保存为JSON文件以在生产系统上运行。

起源和维护者

Maggma由劳伦斯伯克利国家实验室和材料项目软件基金会材料项目团队开发和维护。

Maggma是用Python编写的,并支持Python 3.9+。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

maggma-0.69.4.tar.gz (226.7 kB 查看哈希值)

上传时间

构建分布

maggma-0.69.4-py3-none-any.whl (122.1 kB 查看哈希值)

上传时间: Python 3

由以下支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面