You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VSCode Databricks扩展运行Kedro时无完整输出的求助

问题:VSCode Databricks扩展执行Kedro脚本仅返回部分输出

在Azure环境中使用VSCode的Databricks扩展搭配Kedro访问Databricks服务器,整体运行正常,但本地执行文件时无法看到完整的Kedro输出,仅能获取以下内容:

31/03/2023, 15:09:32 - Synchronizing code to /Repos/<>@<>.ide ...
31/03/2023, 15:09:32 - Running kedro-hello-world.py ...

[03/31/23 13:09:37] INFO     Kedro project dp-kedro                                                  session.py:355
31/03/2023, 15:09:43 - Done (took 13914ms)

查看扩展日志发现,返回的结果仅包含单条日志,其余输出未被捕获:

{
    "level": "debug",
    "logger": "SDK",
    "loggingFunction": "CommandExecutionService.commandStatus",
    "message": "cluster",
    "operationId": "id",
    "operationName": "CommandExecutionService.commandStatus",
    "request": {"method": "GET"},
    "response": {
        "id": "id",
        "results": {
            "data": "[03/31/23 12:41:43] INFO     Kedro project dp-kedro                                                  session.py:355",
            "resultType": "text",
        },
        "status": "Finished",
    },
    "timestamp": 1680266509470,
}

直接在Databricks平台上执行该文件可看到完整的Kedro输出,以下是解决方法:

解决方法

  • 调整Kedro日志输出流:Kedro默认将日志输出到stderr,而VSCode Databricks扩展可能仅捕获stdout的内容。修改项目conf/base/logging.yml中的控制台处理器配置,将日志重定向到stdout:

    handlers:
      console:
        class: logging.StreamHandler
        stream: ext://sys.stdout  # 替换原ext://sys.stderr
        formatter: simple
    

    保存配置后重新同步代码到Databricks仓库,再执行脚本查看输出。

  • 改用Databricks命令执行方式:在VSCode中,通过Databricks扩展的「Run Command」功能,直接执行Kedro命令(如kedro run),而非直接运行本地脚本文件。这种方式会直接在集群上触发命令执行,能完整捕获所有输出流内容。

  • 更新并检查扩展设置:将VSCode的Databricks扩展更新到最新版本,避免旧版本的输出捕获bug。同时在VSCode的「Output」面板中切换到「Databricks」频道,将扩展日志级别设置为Debug,查看是否有被遗漏的输出信息。

  • 临时调试:显式输出到stdout:如果需要快速调试,可以在Kedro代码中添加print()语句,将关键内容直接输出到stdout,确保能被VSCode扩展捕获。

内容的提问来源于stack exchange,提问作者YoniPrv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:30:36