Pandas 用于数据处理和作业调度的Apache Airflow或Apache Beam

Pandas 用于数据处理和作业调度的Apache Airflow或Apache Beam,pandas,airflow,apache-beam,Pandas,Airflow,Apache Beam,我试图提供有用的信息,但我远不是一名数据工程师 我目前正在使用python库pandas对我的数据执行一系列转换,这些数据有很多输入(当前是CSV和excel文件)。输出是几个excel文件。我希望能够使用并行计算(我的意思是不像我对熊猫所做的那样按顺序)每月执行一次计划的监控批处理作业 我真的不知道光束或气流,我快速阅读了文档,似乎两者都可以实现。我应该用哪一个 不是数据处理引擎 Airflow是一个以编程方式编写、安排和编辑文档的平台 监视工作流 是谷歌云上的一项完全管理的服务,可用于数据处

我试图提供有用的信息,但我远不是一名数据工程师

我目前正在使用python库pandas对我的数据执行一系列转换,这些数据有很多输入(当前是CSV和excel文件)。输出是几个excel文件。我希望能够使用并行计算(我的意思是不像我对熊猫所做的那样按顺序)每月执行一次计划的监控批处理作业

我真的不知道光束或气流,我快速阅读了文档,似乎两者都可以实现。我应该用哪一个

不是数据处理引擎

Airflow是一个以编程方式编写、安排和编辑文档的平台 监视工作流


是谷歌云上的一项完全管理的服务,可用于数据处理。您可以编写数据流代码,然后使用气流计划和监视数据流作业。气流还允许您在作业失败时重试作业(重试次数可配置)。如果您想在数据流管道出现故障时发送警报或电子邮件,您还可以在Airflow中进行配置。

其他答案非常技术性且难以理解。我以前处于你的位置,所以我会简单地解释

气流可以做任何事情。它有
bash操作符
PythonOperator
,这意味着它可以运行任何bash脚本或任何Python脚本。
它是一种在易于查看和使用的UI中组织(设置复杂的数据管道DAG)、计划、监视、触发数据管道重新运行的方法。
此外,它易于设置,所有内容都使用熟悉的Python代码。
以有组织的方式执行管道(即使用气流)意味着您不会浪费时间到处调试混乱的数据处理(
cron
)脚本。
如今(大约在2020年以后),我们称之为编排工具

Apache Beam是许多数据处理框架(Spark、Flink等)的包装器。
目的是让您只需学习Beam,就可以在多个后端(Beam Runner)上运行。
如果您熟悉Keras和TensorFlow/Theano/Torch,Keras与其后端之间的关系类似于Beam与其数据处理后端之间的关系

谷歌云平台的云数据流是运行Beam的一个后端。
他们称之为

GCP的产品,Cloud Composer,是一个托管气流实现即服务,运行在谷歌Kubernetes引擎(GKE)的Kubernetes集群中

因此,您可以:

  • 手动气流实施,在实例本身上进行数据处理(如果您的数据很小(或者您的实例足够强大),您可以在运行气流的机器上处理数据。这就是为什么许多人对气流是否可以处理数据感到困惑的原因)
  • 手动实现调用梁作业
  • Cloud Composer(作为服务管理的气流)在云数据流中调用作业
  • Cloud Composer在Composer的Kubernetes群集环境中运行数据处理容器,使用Airflow的
    KubernetesPodOperator(KPO)
  • Cloud Composer在Composer的Kubernetes群集环境中使用Airflow的
    KPO
    运行数据处理容器,但这一次通过创建新节点池并指定
    KPO
    吊舱在新节点池中运行,以更好的隔离方式运行
我的个人经历
气流是轻量级的,不难学习(易于实现),您应该尽可能将其用于数据管道。
此外,由于许多公司都在寻找使用气流的经验,如果你想成为一名数据工程师,你可能应该学习它

此外,managed Airflow(到目前为止我只使用了GCP的Composer)比自己运行Airflow以及管理Airflow
webserver
scheduler
进程要方便得多。

Apache Airflow和Apache Beam表面上看起来非常相似。它们都允许您组织一组处理数据的步骤,并且都确保步骤以正确的顺序运行并满足它们的依赖关系。两者都允许您将步骤和依赖项可视化为GUI中的有向无环图(DAG)

但是,如果你再深入一点,他们的工作和支持的编程模型会有很大的不同

Airflow是一个任务管理系统。DAG的节点是任务,气流确保以正确的顺序运行它们,确保一个任务仅在其依赖项任务完成后启动。依赖任务不会同时运行,而是一个接一个地运行。独立任务可以并发运行

Beam是一个数据流引擎。DAG的节点形成(可能是分支)管道。DAG中的所有节点同时处于活动状态,它们将数据元素从一个节点传递到下一个节点,每个节点都对其进行一些处理

这两者有一些重叠的用例,但是有很多事情只有其中一个能做好

气流管理相互依赖的任务。虽然此依赖关系可以由一个任务向下一个任务传递数据组成,但这不是一个要求。事实上,它甚至不关心任务做什么,只需要启动它们,看看它们是完成了还是失败了。如果任务需要相互传递数据,您需要自己协调,告诉每个任务在何处读取和写入数据,例如本地文件路径或某处的web服务。任务可以由Python代码组成,但也可以是任何外部程序或web服务调用

在Beam中,步骤定义与引擎紧密集成。您可以用支持的编程语言定义步骤,这些步骤在Beam进程中运行。处理t