我的火花和气流服务器不同。而且我在气流服务器中没有火花二进制文件。我能够使用 SSHOperator 并在集群模式下完美地运行 Spark 作业。我想知道从长远来看,使用 SSHOperator 或 SparkSubmitOperator 提交 pyspark 作业有什么好处。任何帮助将不胜感激。
以下是在气流中使用SSHOperator与SparkSubmit Operator的优缺点,我的建议如下。
SSHOperator:此操作员将对远程Spark服务器执行SSH操作,并在远程集群中执行Spark提交。
优点:
- 气流工作器无需额外配置
缺点:
- 难以维护火花配置参数
- 需要从气流服务器启用SSH端口22到Spark服务器,这会导致安全问题(尽管您在专用网络上,但使用基于SSH的远程执行不是最佳实践。
SparkSubbmitOperator :此运算符将以干净的方式执行火花提交操作,但您仍然需要额外的基础结构配置。
优点:
- 如上所述,它带有方便的 spark 配置,无需额外的工作来调用 spark 提交
缺点:
- 需要在所有气流服务器上安装 spark。
除了这两个选项之外,我还列出了另外 2 个选项。
在 Spark 集群上安装 Livy 服务器,并使用 python Livy 库与 Airflow 中的 Spark 服务器进行交互。请参考 : https://pylivy.readthedocs.io/en/stable/
如果您的火花集群在 AWS EMR 上,我鼓励使用EmrAddStepsOperator
有关其他讨论,请参阅此处:在气流 (1**.1*.0.35( 中从其他群集 (1**.1*.0.21( 运行 Spark 提交程序。如何在气流中远程连接其他集群
SparkSubmitOperator是一个专门的运算符。也就是说,它应该使提交 Spark 作业的编写任务更容易,并且代码本身更具可读性和可维护性。因此,如果可能的话,我会使用它。
在您的情况下,您应该考虑修改基础结构(以便您可以使用 SparkSubmitOperator(的努力是否值得我上面提到的收益。