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

WSL本地环境dbt-spark[session]运行Python模型报错求排查

问题描述

已在Windows 11的WSL中配置带Hive支持和元数据存储的PySpark,spark-sql可正常运行。安装dbt-spark[session]适配器后,尝试创建Python dbt模型,profiles.yml配置如下:

local_spark:
  target: dev
  outputs:
    dev:
      type: spark
      host: local
      method: session
      schema: default
      file_format: delta

通过已激活的本地Spark会话(method:session)运行Python模型,先创建PySpark会话再调用dbtRunner的dbt.invoke方法,代码如下:

# Initialize the dbtRunner
dbt = dbtRunner()

# Define the dbt command to run, for example: `dbt run --models my_model`
cli_args = ["run", "--select", "stage", "--project-dir", "<my project folder>", "--profiles-dir", "<my profile folder>"]

# Use the invoke method to run the command
result = dbt.invoke(cli_args)

运行时出现错误:

Databricks cluster_id is required for all_purpose_cluster submission method with running with notebook.

未使用dbt-databricks适配器且指定了method:session,求问题原因及缺失配置。

问题原因与解决办法

原因

错误源于dbt-spark的session模式在Python脚本调用场景下,误将运行环境识别为Databricks notebook环境,触发了all_purpose_cluster提交逻辑,而非复用本地已有的Spark会话。

解决步骤

  • 修改profiles.yml配置
    在dev输出配置中添加spark_session: existing,明确告知适配器复用当前已初始化的Spark会话:

    local_spark:
      target: dev
      outputs:
        dev:
          type: spark
          host: local
          method: session
          schema: default
          file_format: delta
          spark_session: existing
    
  • 确保Spark会话提前初始化
    在调用dbt.invoke()前,必须显式创建并初始化PySpark会话,保证会话能被dbt检测到,调整后的代码示例:

    from pyspark.sql import SparkSession
    from dbt.cli.main import dbtRunner
    
    # 初始化PySpark会话
    spark = SparkSession.builder \
        .appName("dbt-local-session") \
        .enableHiveSupport() \
        .getOrCreate()
    
    # 初始化dbtRunner并执行命令
    dbt = dbtRunner()
    cli_args = ["run", "--select", "stage", "--project-dir", "<my project folder>", "--profiles-dir", "<my profile folder>"]
    result = dbt.invoke(cli_args)
    
  • 检查版本兼容性
    确认dbt-spark与本地PySpark版本匹配,比如PySpark 3.3.x对应dbt-spark 1.6.x系列,版本不匹配可能导致适配器逻辑异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:16:19