首页 > 解决方案 > 如何在 Azure Databricks 笔记本中调试长时间运行的 python 命令?

问题描述

我正在关注本教程:https ://docs.microsoft.com/en-us/academic-services/graph/tutorial-azure-databricks-hindex

我已经获得了对 Microsoft Academic Graph 数据集的访问权限,并希望根据教程发布一些基本的 pySpark 代码。

例如,这段代码:

# Get affiliations
Affiliations = MAG.getDataframe('Affiliations')
Affiliations = Affiliations.select(Affiliations.AffiliationId, Affiliations.DisplayName)
Affiliations.show(3)

当我使用“Shift + Enter”运行代码时,它会进入“正在运行命令”的状态 - 并且似乎永远不会完成,即使在半小时后也是如此。我已插入此屏幕截图并附加到我的帖子中。

我已经单独运行了这些命令,并且是最后一个 ( Affiliations.show(3)) 导致缓慢。

例如,当我自己运行命令 ( Affiliations = MAG.getDataframe('Affiliations')) 时,我实际上得到了一个结果:

AffiliationId:long
Rank:integer
NormalizedName:string
DisplayName:string
GridId:string
OfficialPage:string
WikiPage:string
PaperCount:long
CitationCount:long
Latitude:float
Longitude:float
CreatedDate:date

问题:如何调试它以找出导致缓慢的原因?

在此处输入图像描述

标签: pythonazurepysparkazure-databrickspyspark-dataframes

解决方案


在笔记本环境中调试分布式应用程序仍然具有挑战性。尽管 Web UI 有必要的信息,但 Web UI 和开发环境之间还是存在差距:通常很难在 Web UI 中找到与您正在调查的代码相关的信息;并且没有简单的方法来查找历史运行时信息。

在此处输入图像描述

了解如何使用 Databricks Spark UI 进行调试:

Spark UI 包含大量可用于调试 Spark 作业的信息。有很多很棒的可视化,我们在这里有一篇关于这些功能的博客文章。

在此处输入图像描述

有关更多详细信息,请单击 Jobx 视图(阶段):

在此处输入图像描述

参考: 使用 Databricks 调试 Apache Spark UI 的技巧

希望这可以帮助。


推荐阅读