Lou*_*isB 23 pandas airflow apache-beam
我正在尝试提供有用的信息,但我远非数据工程师.
我目前正在使用python库pandas对我的数据执行一系列转换,这些数据有很多输入(目前是CSV和excel文件).输出是几个excel文件.我希望能够通过并行计算执行计划的受监视批处理作业(我的意思是不像我正在做的那样使用pandas),每月一次.
我真的不知道Beam或Airflow,我很快就通读了文档,似乎两者都可以实现.我应该使用哪一个?
cry*_*bhu 37
其他答案非常技术性且难以理解.我以前就在你的位置,所以我会用简单的语言解释.
气流可以做任何事情.它有BashOperator和PythonOperator,这意味着它可以运行任何bash脚本或任何Python脚本.
它是一种在易于查看和使用的UI中组织(设置复杂数据管道DAG),计划,监视,触发数据管道重新运行的方法.
此外,它很容易设置,一切都在熟悉的Python代码中.
以有组织的方式管理管道(即使用Airflow)意味着您不必浪费时间在整个地方调试一堆数据处理脚本.
Apache Beam是许多数据处理框架(Spark,Flink等)的包装器.
目的是让你学习Beam并且可以运行多个后端(Beam runners).
如果您熟悉Keras和TensorFlow/Theano/Torch,Keras及其后端之间的关系类似于Beam及其数据处理后端之间的关系.
Google Cloud Platform的Cloud Dataflow是运行Beam on的后端之一.他们称之为Dataflow跑步者(https://beam.apache.org/documentation/runners/dataflow/)
GCP的最新产品Cloud Composer是一种托管的Airflow实施即服务.
因此,您可以:
- 手动Airflow实现调用Beam
- 手动Airflow实现,对实例本身进行数据处理(如果您的数据很小(或您的实例足够强大),您可以在运行Airflow的机器上处理数据.这是如果Airflow可以处理数据,很多人会感到困惑)
- 管理Airflow作为服务(云编写器)调用云数据流中的作业
我的个人经验:
Airflow重量轻,不易学(易于实现),您应尽可能将它用于数据管道.
此外,由于许多公司正在寻找使用Airflow的经验,如果您希望成为数据工程师,您应该学习它
Jan*_*nis 15
表面上,Apache Airflow和Apache Beam看起来非常相似。两者都允许您组织一组处理数据的步骤,并确保步骤以正确的顺序运行并满足其依赖性。两者都允许您将步骤和依赖关系可视化为GUI中的有向无环图(DAG)。
但是,当您深入研究时,它们的功能和所支持的编程模型会有很大的差异。
气流是任务管理系统。DAG的节点是任务,Airflow确保以正确的顺序运行它们,并确保仅在其依赖项任务完成后才启动一个任务。依赖任务不会同时运行,而只能一个接一个地运行。独立任务可以同时运行。
Beam是一个数据流引擎。DAG的节点形成一个(可能是分支的)管道。DAG中的所有节点都同时处于活动状态,它们将数据元素从一个传递到另一个,每个元素都对其进行一些处理。
两者有一些重叠的用例,但是在很多事情中,只有两者之一可以做得很好。
气流管理彼此依赖的任务。尽管这种依赖性可以包括一项任务,将数据传递给下一项任务,但这不是必需的。实际上,Airflow甚至都不在乎任务是做什么的,它只需要启动它们并查看它们是否完成即可。如果任务需要相互传递数据,则需要自己协调,告诉每个任务在哪里读写数据,例如本地文件路径或某处的Web服务。任务可以由Python代码组成,但也可以是任何外部程序或Web服务调用。
在Beam中,您的步骤定义与引擎紧密集成在一起。您使用受支持的编程语言定义步骤,这些步骤在Beam流程中运行。如果可能的话,在外部过程中处理计算将非常困难*,并且肯定不是使用Beam的方式。您的步骤仅需担心它们正在执行的计算,而不必担心存储或传输数据。在不同步骤之间传输数据完全由框架处理。
在Airflow中,如果您的任务处理数据,则单个任务调用通常会对整个数据集进行一些转换。在Beam中,数据处理是核心接口的一部分,因此它实际上无法做其他任何事情。Beam步骤的调用通常处理单个或几个数据元素,而不是整个数据集。因此,Beam还支持无限长度的数据集,这是Airflow本身无法解决的。
另一个区别是Airflow本身就是一个框架,而Beam实际上是一个抽象层。Beam管道可以在Apache Spark,Apache Flink,Google Cloud Dataflow等上运行。所有这些都支持或多或少相似的编程模型。顺便说一下,Google还通过Google Cloud Compose将Airflow云化为一项服务。
* Apache Spark对Python的支持实际上是通过在子进程中运行完整的Python解释器来实现的,但这是在框架级别实现的。
Apache Airflow不是数据处理引擎。
Airflow是一个以编程方式编写,安排和监视工作流的平台。
Cloud Dataflow是Google Cloud上的一项完全托管的服务,可用于数据处理。您可以编写您的Dataflow代码,然后使用Airflow计划和监视Dataflow作业。如果工作失败,Airflow还可以让您重试作业(重试次数是可配置的)。如果您想通过Slack或电子邮件发送警报,并且数据流管道失败,也可以在Airflow中进行配置。
归档时间: |
|
查看次数: |
9560 次 |
最近记录: |