使用Python作为ETL工具

使用Python作为ETL工具,python,etl,Python,Etl,我们计划在我们的一个项目中使用Python作为ETL。 我们的要求如下 等待外部系统通过Rabbit MQ发出通知 收到MQ通知后,立即读取xml文件(文件大小可以从几KB到6GB) 在dataframe中加载数据 对ID列上的dataframe进行排序 删除具有重复ID的记录 对价格、金额列执行一些计算 将数据插入数据库(MongoDB) 将最终输出导出到csv文件 向外部系统发送已生成csv文件的MQ通知 注: 将有许多xml文件需要同时处理 此外,根据输入文件,上述流程中的步骤5、6和7可

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

  • 等待外部系统通过Rabbit MQ发出通知
  • 收到MQ通知后,立即读取xml文件(文件大小可以从几KB到6GB)
  • 在dataframe中加载数据
  • 对ID列上的dataframe进行排序
  • 删除具有重复ID的记录
  • 对价格、金额列执行一些计算
  • 将数据插入数据库(MongoDB)
  • 将最终输出导出到csv文件
  • 向外部系统发送已生成csv文件的MQ通知
  • 注: 将有许多xml文件需要同时处理

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

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

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

    您可以看看airbnb为Etl任务开发的开源apache airflow

    Hmm…,可伸缩性可能是一个具有挑战性的问题,但语言不是最相关的部分。例如,可以在RabbitMQ级别处理优先级部分,方法是为不同的优先级级别使用不同的队列,并让读卡器首先处理高优先级队列。恐怕这个问题真的很广泛。。。