如何防止同一个Spark应用程序执行两次

时间:2016-03-15 18:21:54

标签: python apache-spark pyspark

我想作为关于在Spark上运行应用程序的一般问题。 我有一个pyspark应用程序,可以处理各种客户的数据。处理逻辑是相同的,但数据是客户特定的。本质上它是Spark上的ETL过程,用Python编写。 现在我在我的开发环境中以客户端模式运行。我通过spark-submit提交应用程序。客户ID是我的Spark应用程序名称:

$> spark-submit --jars my/jars MySparkAppETL.py CustomerID

我的目标是如果已经有使用相同CustomerID运行的应用程序,则阻止针对给定CustomerID执行Spark应用程序执行?

我目前的想法是自己构建所需的逻辑,如下所示: 1.设置元数据存储库 2.创建表跟踪应用程序执行,在应用程序开始时将应用程序状态设置为“InProcess”。 3.创建一个模块,该模块将检查特定CustomerID的应用程序状态,如果具有此CustomerID的作业仍在运行,则阻止后续作业启动。 4.成功完成作业后,将应用程序状态更新为“完成”。

我的问题是Apache Spark中的任何机制还是其他一些现成的工具?

谢谢你, 坑。

0 个答案:

没有答案