Pandas 气流多步加工

Pandas 气流多步加工,pandas,airflow,apache-airflow-xcom,Pandas,Airflow,Apache Airflow Xcom,我有一个使用pandas的多阶段ETL转换阶段。基本上,我从Mongodb加载了几乎2Gb的数据,然后在列中应用了几个函数。我的问题是,是否有任何方法可以在多个任务中打破这些转换 我考虑过的方案有: 在Mongodb中创建临时表,并在步骤之间加载/存储转换后的数据帧。我发现这很麻烦,而且由于磁盘I/O的原因,很容易产生非正常的开销 使用XCom在任务之间传递数据。我认为这是一个很好的解决方案,但我担心数据的绝对大小。文档明确说明 任何可以pickle的对象都可以用作XCom值,因此用户应确保使用

我有一个使用pandas的多阶段ETL转换阶段。基本上,我从Mongodb加载了几乎2Gb的数据,然后在列中应用了几个函数。我的问题是,是否有任何方法可以在多个任务中打破这些转换

我考虑过的方案有:

  • 在Mongodb中创建临时表,并在步骤之间加载/存储转换后的数据帧。我发现这很麻烦,而且由于磁盘I/O的原因,很容易产生非正常的开销

  • 使用XCom在任务之间传递数据。我认为这是一个很好的解决方案,但我担心数据的绝对大小。文档明确说明

  • 任何可以pickle的对象都可以用作XCom值,因此用户应确保使用大小适当的对象。

  • 在步骤之间使用内存中存储。也许将数据保存在Redis服务器或其他什么地方,但我不确定这是否比完全使用XCom更好

  • 那么,你们当中有人有什么关于如何处理这种情况的建议吗?谢谢

    您以前是否为转换进行过中间写入和读取?如果数据存储在内存中,那么分割步骤是没有意义的。您可以在一个任务中将Mongo查询写入共享卷,将Pandas转换组合到另一个任务中,然后写入目标,然后在最后一个任务中删除临时对象。