SparkSubmitOperator vs SSHOperator用于在气流中提交pyspark应用程序

时间:2020-06-25 06:57:41

标签: airflow airflow-scheduler spark-submit airflow-operator apache-spark-2.3

我的火花和气流服务器不同。而且我在气流服务器中没有火花二进制文件。我能够使用SSHOperator并在群集模式下很好地运行spark作业。我想知道长期使用SSHOperator或SparkSubmitOperator提交pyspark作业会有什么好处。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

下面是在气流中使用SSHOperator vs SparkSubmit Operator的利弊,我的建议也紧随其后。

SSHOperator::该操作员将对远程Spark服务器执行SSH操作,并在远程集群中执行spark提交。

优点:

  1. 气流工作人员不需要其他配置

缺点:

  1. 难以维持火花配置参数
  2. 需要启用从气流服务器到火花服务器的SSH端口22,这会引起安全问题(尽管您在专用网络上,这不是使用基于SSH的远程执行的最佳实践。)

SparkSubbmitOperator:即使您需要其他基础结构配置,此操作员也将以干净的方式执行Spark提交操作。

优点:

  1. 如上所述,它具有便捷的spark配置,无需额外的精力即可调用spark提交

缺点:

  1. 需要在所有气流服务器上安装火花。

除了这两个选项外,我还列出了另外两个选项。

  1. 在Spark集群上安装Livy服务器,并使用python Livy库与Airflow中的Spark服务器进行交互。请参阅:https://pylivy.readthedocs.io/en/stable/

  2. 如果您的Spark集群位于AWS EMR上,我鼓励使用 EmrAddStepsOperator

有关其他讨论,请参考这里:To run Spark Submit programs from a different cluster (1**.1*.0.21) in airflow (1**.1*.0.35). How to connect remotely other cluster in airflow

答案 1 :(得分:0)

SparkSubmitOperator是专门的运算符。也就是说,它应该使提交Spark作业的编写任务更加容易,并且代码本身更具可读性和可维护性。因此,我会尽可能使用它。

在您的情况下,您应该考虑修改基础架构(以便可以使用SparkSubmitOperator)的努力是否值得我上面提到的好处。