【发布时间】:2016-08-27 05:41:43
【问题描述】:
出于调试目的,我想将来自 spark 任务(在执行程序中运行)的消息发送到驱动程序机器。 docs 声称 spark.driver.host 包含此信息,但我不知道如何从工作人员(或从驱动程序,就此而言......)访问它
【问题讨论】:
标签: apache-spark pyspark
出于调试目的,我想将来自 spark 任务(在执行程序中运行)的消息发送到驱动程序机器。 docs 声称 spark.driver.host 包含此信息,但我不知道如何从工作人员(或从驱动程序,就此而言......)访问它
【问题讨论】:
标签: apache-spark pyspark
sc.getConf.get("spark.driver.host")
但驱动程序不是您需要的。你需要一个工人。所以在你的 rdd.mapPartitions 块中尝试这样的代码:
val localhost = java.net.InetAddress.getLocalHost
val ip = java.net.NetworkInterface.getByInetAddress(localhost)
查看this 以获得更精确的方法。
【讨论】:
只需通过捕获的全局变量将驱动程序的 IP 传递给工作人员:
import socket
driver_ip_addr = socket.gethostbyname(socket.gethostname())
def process_data(data):
# Do some work ...
send_log_msg(driver_ip_addr, "hello!")
# Do some more work...
processed_data = my_rdd.map(process_data).collect()
【讨论】: