apache-spark - 使用 Airflow 运行 Spark 流作业吗?

标签 apache-spark streaming airflow

我们在hadoop集群中有Spark Ba​​tch作业和Spark Streaming作业。

我们希望在同一平台上计划和管理它们。

我们遇到了 Airflow ,这符合我们的需求
“创建,计划和监视工作流的平台”。

我只希望能够停止和启动Spark Streaming工作。使用 Airflow 图和剖析问题不大。

我的问题是
除了失去一些功能(图形,配置文件)之外,我为什么不应该使用Airflow运行Spark Streaming作业?

我碰到了这个问题:
Can airflow be used to run a never ending task?

这说可能,而不是为什么不应该。

最佳答案

@mMorozonv看起来不错。如果不存在,则可以让一个DAG启动流。然后使用第二个DAG作为运行状况检查器来跟踪其进度。如果运行状况检查失败,则可以再次触发第一个DAG。

或者,您可以以trigger [1]的once间隔运行流。

# Load your Streaming DataFrame
sdf = spark.readStream.load(path="data/", format="json", schema=my_schema)
# Perform transformations and then write…
sdf.writeStream.trigger(once=True).start(path="/out/path", format="parquet")

这为您提供了 Spark 流式传输的所有相同优势,并且具有批处理的灵活性。

您可以简单地将流指向您的数据,此作业将检测自上次迭代以来的所有新文件(使用检查点),运行流式批处理,然后终止。您可以触发 Airflow DAG的计划,以适应您希望在任何时候(每分钟,每小时等)处理数据的任何滞后。

对于低延迟要求,我不建议这样做,但它非常适合每分钟运行。

[1] https://databricks.com/blog/2017/05/22/running-streaming-jobs-day-10x-cost-savings.html

关于apache-spark - 使用 Airflow 运行 Spark 流作业吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54785519/

相关文章:

streaming - 是否有任何模拟器/工具来生成流消息?

python - 使用 Flask 流式传输生成的 CSV

Airflow 回填澄清

apache-spark - 在 Cassandra 中使用 Spark 插入数据

apache-spark - EMR-5.32.0 上的 Spark 不产生请求的执行程序

scala - Spark 流示例使用附加参数调用 updateStateByKey

amazon-web-services - 如何将 DBT 与 AWS Managed Airflow 结合使用?

airflow - 如何在 Apache Airflow 中运行的 DAG 中指定运行 ID

apache-spark - Spark 2.0 独立模式动态资源分配工作线程启动错误

hadoop - 将列添加到Hive外部表错误