google-cloud-dataflow - 使用 Dataflow 与 Cloud Composer

标签 google-cloud-dataflow airflow apache-beam google-cloud-composer

我想澄清一下 Cloud Dataflow 或 Cloud Composer 是否适合这项工作,但我从 Google 文档中不清楚。

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

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

# file.csv
type\x01date
house\x0112/27/1982
car\x0111/9/1889

从这个文件中,我们检测架构并创建一个 BigQuery 表,如下所示:
`table`
type (STRING)
date (DATE)

而且,我们还格式化数据以插入(在 python 中)到 BigQuery:
DATA = [
    ("house", "1982-12-27"),
    ("car", "1889-9-11")
]

这是对正在发生的事情的极大简化,但这就是我们目前使用 Cloud Dataflow 的方式。

那么我的问题是,Cloud Composer 在哪里?进入画面?它可以在上面提供哪些附加功能?换句话说,为什么要在“云数据流之上”使用它?

最佳答案

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

这是一个帮助您理解的示例:

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

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

看起来已经很酷了,但是,如果 CSV 文件不是在 UTC 时间 01:00 被覆盖,而是在一天中的任何时候被覆盖,您将如何选择每日运行时间? Cloud Composer 提供了传感器,可以监控条件(在本例中为 CSV 文件修改时间)。 Cloud Composer 可以保证只有在满足条件的情况下才会启 Action 业。

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

关于google-cloud-dataflow - 使用 Dataflow 与 Cloud Composer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54154816/

相关文章:

python-3.x - 如何使用云函数触发数据流? (Python SDK)

python - 从 sub dag 中拉取 xcom

java - 将 ByteBuffer 字段写入 Cassandra 时出现异常

airflow - 使用 Pub/Sub 消息触发 Cloud Composer DAG

apache-beam - Beam Schema 与 Python 相关吗?

java - 如何在 Scala 中调用 FileIO.Write.via(Contextful, Contextful)

ssl - 在 Dataflow 上运行的 Apache Beam 管道无法从 KafkaIO : SSL handshake failed 读取

google-cloud-dataflow - Apache Beam:FlatMap与Map?

python - 只有在另一个管道在谷歌数据流上完成后才执行管道

python - Apache Airflow 不调度任务