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

如何在PySpark中传递Catalog名称?Databricks语法错误排查

问题原因

当Catalog名称以数字开头(如100sandbox)或为纯数字(如1000)时,直接在SQL语句中使用会触发语法解析错误——SQL解析器会将这类标识符误认为数字,而非对象名称。

解决方法

在构建SQL语句时,用反引号(`)包裹Catalog名称,确保SQL解析器正确识别为标识符。修正后的代码如下:

list_catalogs = ['100sandbox', '200playground', '1000', 'sales']

df_catalogs_and_databases = None
_df = None

for catalog in list_catalogs:
    # 用反引号包裹catalog名称,避免语法解析错误
    _df = spark.sql(f'SHOW DATABASES FROM `{catalog}`')\
        .select(
            lit(catalog).alias('catalog'),
            col('databaseName').alias('database')
        )
    try:
        df_catalogs_and_databases = df_catalogs_and_databases.union(_df)
    except AttributeError as e:
        # 处理初始时df_catalogs_and_databases为None的情况
        df_catalogs_and_databases = _df
    except Exception as e:
        raise

display(df_catalogs_and_databases)
补充说明

Databricks SQL遵循ANSI SQL标识符规则:

  • 常规标识符(以字母开头,仅包含字母、数字、下划线)可直接使用
  • 非常规标识符(以数字开头、纯数字、含特殊字符等)必须用反引号包裹,否则会触发语法解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:46:07