如何在 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?

从 Azure Databricks 笔记本登录到 Azure ML 工作区

Azure - 为存储容器中的每个新 blob 触发 Databricks 笔记本