首页 > 解决方案 > 使用 Python 作为 ETL 工具

问题描述

我们计划在我们的一个项目中使用 Python 作为 ETL。我们的要求如下。

  1. 等待外部系统通过 Rabbit MQ 的通知
  2. 收到 MQ 通知后,立即读取 xml 文件(文件大小可以从几 KB 到 6GB 文件)
  3. 加载数据框中的数据
  4. 在 ID 列上对数据框进行排序
  5. 删除具有重复 ID 的记录
  6. 对价格、金额列执行一些计算
  7. 将数据插入数据库(MongoDB)
  8. 将最终输出导出到 csv 文件
  9. 向外部系统发送 MQ 通知已生成 csv 文件

注意:将有许多必须同时处理的 xml 文件进来。

此外,上述流程中的步骤 5,6 和 7 可能会根据输入文件而有所不同。因此,我们将为每种文件类型提供单独的流程。

此外,我们还必须设置文件处理的优先级。如果有任何高优先级文件进入,则另一个文件必须等待,并且必须首先处理优先级文件。

我们想就如何在 Python 中设计这样一个可扩展且性能良好的系统提出建议?我们可以使用哪些工具?

标签: pythonetl

解决方案


您可以查看由 airbnb 为 Etl 任务开发的开源 apache 气流 https://gtoonstra.github.io/etl-with-airflow/


推荐阅读