Using Dataflow vs. Cloud Composer



我想澄清一下Cloud Dataflow或Cloud Composer是否是适合这份工作的工具,但我从谷歌文档中不清楚。

目前,我正在使用Cloud Dataflow读取一个非标准的csv文件——进行一些基本处理——并将其加载到BigQuery中。

让我举一个非常基本的例子:

# file.csv
typex01date
housex0112/27/1982
carx0111/9/1889

从这个文件中,我们检测模式并创建一个BigQuery表,类似于以下内容:

`table`
type (STRING)
date (DATE)

而且,我们还格式化我们的数据以插入(在python中)到BigQuery:中

DATA = [
("house", "1982-12-27"),
("car", "1889-9-11")
]

这是对正在发生的事情的巨大简化,但这就是我们目前使用云数据流的方式。

那么我的问题是,Cloud Composer是从哪里出现的呢?除此之外,它还能提供哪些附加功能?换句话说,为什么要在云数据流之上使用它?

Cloud composer(由Apache Airflow支持)专为小规模任务调度而设计。

这里有一个例子可以帮助你理解:

假设您在GCS中有一个CSV文件,并使用您的示例,假设您使用云数据流来处理它,并将格式化的数据插入BigQuery。如果这是一件一次性的事情,那么你刚刚完成它,它是完美的。

现在假设您的CSV文件在UTC每天01:00被覆盖,并且您希望每次被覆盖时都运行相同的Dataflow作业来处理它。如果您不想在周末和节假日都在01:00UTC手动运行作业,您需要一个东西来定期为您运行作业(在我们的示例中,每天01:00UTC)。Cloud Composer可以在这种情况下为您提供帮助。您可以向Cloud Composer提供配置,其中包括运行哪些作业(操作员)、何时运行(指定作业开始时间)以及以何种频率运行(可以是每天、每周甚至每年)。

然而,这似乎已经很酷了,如果CSV文件不是在01:00 UTC被覆盖,而是在一天中的任何时候被覆盖,你将如何选择每天的运行时间?Cloud Composer提供了传感器,可以监控条件(在这种情况下,是CSV文件修改时间)。Cloud Composer可以保证只有在满足条件的情况下才能启动作业。

Cloud Composer/Apache Airflow提供了更多功能,包括运行多个作业的DAG、失败的任务重试、失败通知和漂亮的仪表板。您还可以从他们的文档中了解更多信息。

对于所描述任务的基础,云数据流是一个不错的选择。对于云数据流来说,可以并行处理的大数据是一个不错的选择。

处理大数据的真实世界通常是混乱的。数据通常有点脏,经常或大批量到达,需要以时间敏感的方式进行处理。通常需要协调多个任务/系统才能提取所需的数据。考虑加载、转换、合并、提取和存储类型的任务。大数据处理通常使用shell脚本和/或Python程序粘合在一起。这使得自动化、管理、调度和控制过程变得困难。

Google Cloud Composer是Cloud Dataflow的一大进步。Cloud Composer是一个跨平台的编排工具,支持AWS、Azure和GCP(以及更多)的管理、调度和处理能力。

云数据流处理任务。Cloud Composer管理协调任务的整个过程,这些任务可能涉及BigQuery、Dataflow、Dataproc、Storage、内部部署等。

我的问题是,Cloud Composer在哪里出现?除此之外,它还能提供哪些附加功能?在其他话,为什么要在"云数据流之上"使用它?

如果您需要/需要对大数据任务进行更多的管理、控制、调度等,那么Cloud Composer将为您带来巨大价值。如果您只是偶尔按需运行一个简单的云数据流任务,那么Cloud Composer可能有些过头了。

Cloud Composer Apache Airflow是为任务调度而设计的

云数据流Apache Beam=处理任务

对我来说,Cloud Composer是Dataflow的一大进步。如果我有一项任务,比如说,处理我的CSV文件从存储到BQ,我会/可以使用Dataflow。但如果我想每天都做同样的工作,我会使用Composer。

还要考虑成本。Cloud Composer每月的固定成本为500美元(Composer 2)或250美元(Composer1),而Dataflow只有在运行时才有固定成本。

数据流还被扩展为包括";批处理数据流水线";这为您提供了改进的调度和监控手段,并使其成为简单数据转换作业的可行选项。

当你只有两个喇叭和一个胸骨时,你就没有睾丸了。。。我只会考虑使用Cloud Composer/Airflow,如果你有大量的工作要管理,或者只有少量的工作,但有许多相互关联的步骤。

(还有其他选项需要考虑,例如云数据融合、云工作流、数据流、云功能、云运行、应用程序引擎。)

最新更新