问题陈述:我想利用 Databricks 集群的驱动程序和工作节点。我将代码提交到 UDF 以在工作节点上运行它,但我不知道如何进一步控制/调整它。我的代码是 IO 密集型的,所以我想在工作线程的核心级别上使用并发性。我试图找到内部工作概念,例如工作人员架构和驱动程序节点执行/处理,但没有足够的资源。有人可以帮忙吗?
另外,我尝试使用打印语句或记录器,但我看到 UDF 没有打印它。有没有办法打印日志?我尝试了以下选项:
import logging
logger.setLevel(log4jLogger.Level.INFO)
它仅打印驱动程序日志。
我希望你的 UDF 没有做任何繁重的工作。 UDF 设计为轻量级,通常在单个执行器核心上运行。您可以参考此链接来查看您的任务是否符合该描述。
您无法直接控制 UDF 内的并发性。相反,Spark 通过在集群中的可用核心之间分配数据分区来管理并行性。
为了回答你的第二个问题,UDF 日志通常写入执行程序日志。您可以通过 Spark UI 访问这些日志。您可以在 Spark UI 的执行器选项卡中检查
stdout
和 stderr
日志。