【发布时间】:2021-11-17 01:25:14
【问题描述】:
我有一个计算量大的 Python 函数,它封装到 PySpark UDF 中并在大约 100 行数据上运行。在查看 CPU 利用率时,看起来有些工作节点甚至没有被利用。我意识到这可能有多种原因,并正在尝试调试。
在 UDF 内部,我已经记录了各种统计信息(例如,每次 UDF 执行的开始和结束时间)。还有什么方法可以记录工作节点 ID 吗?我的目的是确保作业在所有工作节点之间均匀分布。
我想工作人员的 IP 或我可以在 UDF 中登录的任何其他独特功能也可以工作。
【问题讨论】:
-
不是worker ID,但是它的网络地址或主机名呢?您可以使用 Spark UI 参考它们
-
你知道我会怎么做吗?我在 stackoverflow 或其他地方找不到单个线程,它描述了如何从执行程序进程内部读取该信息...
-
在 Azure Databricks 中,我采用了这个answer 来获取正在执行的 UDF 中的工作节点的 IP。
-
@Thomas 你可以试试这个delftstack.com/howto/python/get-ip-address-python
-
谢谢!其中一个有效,我将为未来的用户添加一个答案。
标签: python apache-spark pyspark user-defined-functions databricks