如何在 Azure Databricks 笔记本中调试长时间运行的 python 命令?
Posted
技术标签:
【中文标题】如何在 Azure Databricks 笔记本中调试长时间运行的 python 命令?【英文标题】:how to debug long running python commands in Azure Databricks notebook? 【发布时间】:2019-12-12 01:17:03 【问题描述】:我正在关注本教程: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
问题:如何调试它以找出导致缓慢的原因?
【问题讨论】:
【参考方案1】:在笔记本环境中调试分布式应用程序仍然具有挑战性。尽管 Web UI 有必要的信息,但 Web UI 和开发环境之间还是存在差距:通常很难在 Web UI 中找到与您正在调查的代码相关的信息;并且没有简单的方法来查找历史运行时信息。
了解如何使用 Databricks Spark UI 进行调试:
Spark UI 包含大量可用于调试 Spark 作业的信息。有很多很棒的可视化效果,我们在这里有一篇关于这些功能的博文。
更多详情,请点击 Jobx View (Stages):
参考:Tips to Debug Apache Spark UI with Databricks
希望这会有所帮助。
【讨论】:
以上是关于如何在 Azure Databricks 笔记本中调试长时间运行的 python 命令?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure 数据工厂的 Databricks 上运行 .Net spark 作业?
如何根据 azure databricks 中的列值将静态值传递给动态值
以编程方式导入/导出 (Azure) Databricks Notebooks
作业终止后如何将生成的文件从 Azure Databricks 导出到 Azure DevOps?