如何导出Azure Databricks中的完整Spark UI日志供他人分析?
解决Azure Databricks导出Spark作业日志(含Spark UI内容)的问题
一、排查spark.eventLog.dir生成空文件的原因
- 必须提前启用事件日志:仅设置
spark.eventLog.dir无法生成日志,需同时启用事件日志,且要在作业/集群启动前配置(不可运行时动态设置)。正确配置参数如下:
配置方式:spark.eventLog.enabled true spark.eventLog.dbfs.dir dbfs:/path/to/your/event/logs- 单作业:在作业的「高级选项」→「Spark配置」中添加上述两行
- 集群全局:在集群的「Spark配置」中设置,所有提交到该集群的作业都会生成事件日志
- 检查DBFS路径权限:确保作业运行身份(用户/服务主体)对目标DBFS路径有读写权限,可通过笔记本执行
dbutils.fs.ls("dbfs:/path/to/your/event/logs")验证路径可访问性
二、导出完整日志并分享给无工作区权限人员的方法
1. 导出Spark事件日志(对应Spark UI内容)
日志正确生成后会以.lzf压缩格式存储在目标DBFS路径,可通过以下方式导出:
- 使用Databricks CLI下载到本地:
databricks fs cp dbfs:/path/to/your/event/logs/<job-run-id>/*.lzf ./local-directory/ - 在笔记本中用
dbutils.fs.cp将日志复制到Azure Blob Storage/ADLS,生成SAS链接分享给他人
他人查看方式:
用本地Spark环境启动历史服务器加载日志:
spark-class org.apache.spark.deploy.history.HistoryServer --spark.history.fs.logDirectory=file:///path/to/local/logs
访问http://localhost:18080即可查看完整Spark UI内容
2. 导出作业stderr/stdout与Log4j日志
- 直接在作业「运行详情」页面点击「下载日志」按钮,获取日志压缩包
- 集群运行的作业日志还会存于
dbfs:/cluster-logs/<cluster-id>/<job-run-id>路径,可通过CLI或dbutils下载后分享
3. 静态HTML版Spark UI报告(无需Spark环境)
用第三方工具将事件日志转为静态HTML,方便无Spark环境的人员查看:
安装spark-event-log-to-html工具后执行:
spark-event-log-to-html /path/to/local/event.log.lzf -o /path/to/output/html
生成的HTML文件夹可直接分享,用浏览器打开即可查看完整Spark UI内容
注意事项
- Spark事件日志仅包含作业执行详情(对应Spark UI),集群节点系统日志需单独导出
- 分享SAS链接时需设置合理过期时间,避免权限泄露
内容的提问来源于stack exchange,提问作者Łukasz Kastelik
相关产品推荐
相关产品推荐

