python - 使用 Python 作为 ETL 工具
问题描述
我们计划在我们的一个项目中使用 Python 作为 ETL。我们的要求如下。
- 等待外部系统通过 Rabbit MQ 的通知
- 收到 MQ 通知后,立即读取 xml 文件(文件大小可以从几 KB 到 6GB 文件)
- 加载数据框中的数据
- 在 ID 列上对数据框进行排序
- 删除具有重复 ID 的记录
- 对价格、金额列执行一些计算
- 将数据插入数据库(MongoDB)
- 将最终输出导出到 csv 文件
- 向外部系统发送 MQ 通知已生成 csv 文件
注意:将有许多必须同时处理的 xml 文件进来。
此外,上述流程中的步骤 5,6 和 7 可能会根据输入文件而有所不同。因此,我们将为每种文件类型提供单独的流程。
此外,我们还必须设置文件处理的优先级。如果有任何高优先级文件进入,则另一个文件必须等待,并且必须首先处理优先级文件。
我们想就如何在 Python 中设计这样一个可扩展且性能良好的系统提出建议?我们可以使用哪些工具?
解决方案
您可以查看由 airbnb 为 Etl 任务开发的开源 apache 气流 https://gtoonstra.github.io/etl-with-airflow/
推荐阅读
- c# - 如何更改组框点击的焦点?
- python - 如何检查字符串是否严格包含字母和数字
- javascript - 如何使用 paragrph 和动漫 js 来防止中断字母
- c - 警告:从不兼容的指针类型传递 'evenOrOdd' 的参数 1
- unit-testing - 如何在测试失败时自动通知测试所有者?
- node.js - multer 中间件中的 req.body 中缺少一些属性
- c# - 表单错误 - 解析器必须将模块引用解析为有效模块
- python-3.x - r+ for Python 不会读取前两个字母
- vb.net - 组合键 (Ctrl + K, Ctrl + S) 绑定到当前不可用的命令 (Surround With...)
- r - 如何选择未出现在第二个 tibble 中的 tibble 行