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

使用Databricks作业读取Snowflake表时遇AnalysisException错误求助

解决方案

1. 先修复SQL语法错误

你的查询语句里重复了from关键字,这是基础语法错误,先修正为:

select * from dss.raw.abc

2. 解决命名空间错误的核心问题

错误提示说明Databricks默认会话目录无法识别Snowflake的三部分命名(数据库.模式.表)——当前会话目录指向Databricks自身,而非Snowflake。你可以通过以下两种方式访问Snowflake表:

方式一:用Snowflake Spark连接器直接读取

通过Spark的Snowflake数据源读取表,无需依赖Databricks会话目录:

# 配置Snowflake连接参数
snowflake_options = {
    "sfUrl": "你的Snowflake账户URL",
    "sfUser": "你的Snowflake用户名",
    "sfPassword": "你的Snowflake密码",
    "sfDatabase": "dss",
    "sfSchema": "raw",
    "sfWarehouse": "你的Snowflake仓库名称"
}

# 读取Snowflake表
df = spark.read.format("snowflake").options(**snowflake_options).option("dbtable", "abc").load()
df.show()

方式二:创建Snowflake连接后用SQL查询

先在Databricks中创建Snowflake连接(需确保账户有权限):

CREATE OR REPLACE CONNECTION snowflake_connection
OPTIONS (
    type = "snowflake",
    url = "你的Snowflake账户URL",
    user = "你的Snowflake用户名",
    password = "你的Snowflake密码",
    warehouse = "你的Snowflake仓库名称",
    database = "dss",
    schema = "raw"
);

之后通过连接限定Snowflake数据源查询:

# 若连接已指定database和schema,直接查询表名即可
spark.sql("SELECT * FROM snowflake.snowflake_connection.abc").show()

# 或者完整指定三部分命名
spark.sql("SELECT * FROM snowflake.snowflake_connection.dss.raw.abc").show()

关键注意事项

  • 确保Databricks集群已安装Snowflake Spark连接器:可通过集群库管理添加net.snowflake:snowflake-jdbc:xxx和net.snowflake:spark-snowflake_2.12:xxx依赖(版本需匹配Spark版本)
  • 验证Snowflake权限:确保所用用户有权限访问dss.raw.abc表及对应的计算仓库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:25:02