Spark 2:检查节点是驱动程序还是工作者

nav*_*ige 0 apache-spark

我有一个使用 grpc 的 Spark 2 应用程序,以便客户端应用程序可以连接到它。

但是,我希望 grpc 代码仅在驱动程序节点上启动,而不是在工作节点上启动。

Spark 2 中是否有可能检查当前运行代码的节点是否是驱动程序节点?

BiS*_*BiS 5

我不喜欢使用“主机”的方式,你依赖于匹配正确的接口,而且,同一个节点可以同时包含驱动程序和主节点。就个人而言,我设置了一个环境变量

spark.executorEnv.RUNNING_ON_EXECUTOR=yes
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中(在这里使用 Python,但它应该可以使用任何其他语言):

import os
if "RUNNING_ON_EXECUTOR" in os.environ:
       //Run executor code
else:
       //run driver code
Run Code Online (Sandbox Code Playgroud)