通过在 Livy 和跟踪作业上提交批处理 POST 方法,使用 Airflow 提交 Spark 作业

Spark job submission using Airflow by submitting batch POST method on Livy and tracking job

我想使用 Airflow 编排作业,其中包括 运行ning 一些 pig 脚本、shell 脚本和 spark 作业。

主要是关于 Spark 作业,我想使用 Apache Livy 但不确定使用 运行 spark-submit 是否是个好主意。

即使我提交了,使用 Airflow 跟踪 Spark 作业的最佳方法是什么?

我的假设是您的应用程序 JAR 包含要提交到远程 Spark 集群的 Java / Scala 代码。当根据其他可能性进行评估时,Livy 可以说是 远程 spark-submit 的最佳选择:

  • 指定远程masterIP:修改全局配置/环境变量
  • 使用SSHOperatorSSH连接可能中断
  • 使用EmrAddStepsOperator:依赖于EMR

关于跟踪

  • Livy only reports state 而不是 进度 (阶段完成百分比)
  • 如果您对此没问题,您可以通过 REST API 轮询 Livy 服务器并继续打印日志控制台,这些将出现在 WebUI 的任务日志中 (View Logs)

其他注意事项

  • Livy POST/batches 请求重用 SparkSession
  • 如果这是必要的,您必须在 PySpark 中编写您的应用程序代码并使用 POST/session 请求

参考资料


有用的链接