python - 如何在 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
问题:如何调试它以找出导致缓慢的原因?
解决方案
在笔记本环境中调试分布式应用程序仍然具有挑战性。尽管 Web UI 有必要的信息,但 Web UI 和开发环境之间还是存在差距:通常很难在 Web UI 中找到与您正在调查的代码相关的信息;并且没有简单的方法来查找历史运行时信息。
了解如何使用 Databricks Spark UI 进行调试:
Spark UI 包含大量可用于调试 Spark 作业的信息。有很多很棒的可视化,我们在这里有一篇关于这些功能的博客文章。
有关更多详细信息,请单击 Jobx 视图(阶段):
参考: 使用 Databricks 调试 Apache Spark UI 的技巧
希望这可以帮助。
推荐阅读
- tcp - 如何防止 Windows10 向特定 IP 和 PORT 发送 TCP RST?
- python - 难以理解 python 用户定义的函数
- javascript - 如何在Angular的组件/服务中执行任何功能之前先加载http数据?
- processing - 从 p5js 渲染器中清除 createGraphics() 画布
- numpy - 如何找到“分组”或“不均匀”的数据?
- linux - Docker 容器有一些奇怪的地址,03a0646cb148:8888/ 谁能解释一下这种地址叫什么?
- entity-framework - 有没有办法使用 IEnumerable/对象列表的代码优先方法为 EF Core 播种?
- python - 如何将机器学习模型排列重要性转换为python中的数组或字典
- php - 存储用户会话 Corona SDK
- r - 使用 R ggplot 和 geom_bar 时如何对已经堆叠的条形图进行分组