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

求助:Kedro框架中配置Azure密钥访问Snowflake至Blob的Catalog示例

Kedro Catalog 配置Azure权限/密钥示例(适配Databricks+Snowflake场景)

前置依赖确认

确保Databricks集群已安装必要依赖:

pip install kedro kedro-datasets kedro-azure snowflake-spark-connector

1. Azure Blob存储 密钥配置(安全推荐:环境变量+凭证文件)

步骤1:配置凭证文件

在conf/base/credentials.yml中存储Azure Blob的敏感信息(通过环境变量引用,避免硬编码):

azure_blob:
  account_name: "${AZURE_STORAGE_ACCOUNT_NAME}"
  account_key: "${AZURE_STORAGE_ACCOUNT_KEY}"

在Databricks集群的环境变量中设置AZURE_STORAGE_ACCOUNT_NAME和AZURE_STORAGE_ACCOUNT_KEY,或在Kedro项目的.env文件中定义(仅本地测试用)。

步骤2:Catalog中配置Blob输出数据集

使用SparkDataSet适配Databricks环境:

snowflake_to_blob_output:
  type: kedro_datasets.spark.SparkDataSet
  filepath: "wasbs://<your-container>@${AZURE_STORAGE_ACCOUNT_NAME}.blob.core.windows.net/path/to/saved_data.parquet"
  save_args:
    format: parquet
    mode: overwrite
  credentials: azure_blob

2. 直接配置密钥(仅测试场景)

如果是快速测试,可直接在Catalog中写入Spark配置(不推荐生产环境):

snowflake_to_blob_output:
  type: kedro_datasets.spark.SparkDataSet
  filepath: "wasbs://<your-container>@your-storage-account.blob.core.windows.net/path/to/saved_data.parquet"
  save_args:
    format: parquet
    mode: overwrite
  spark_config:
    fs.azure.account.key.your-storage-account.blob.core.windows.net: "your-actual-storage-account-key"

3. Snowflake数据源配置(结合Databricks Spark)

在conf/base/catalog.yml中配置Snowflake输入数据集,同样用环境变量管理敏感信息:

snowflake_source_data:
  type: kedro_datasets.spark.SparkDataSet
  load_args:
    format: net.snowflake.spark.snowflake
    sfUrl: "${SNOWFLAKE_ACCOUNT_URL}"
    sfUser: "${SNOWFLAKE_USER}"
    sfPassword: "${SNOWFLAKE_PASSWORD}"
    sfDatabase: "TARGET_DB"
    sfSchema: "TARGET_SCHEMA"
    sfWarehouse: "TARGET_WH"
    sfRole: "TARGET_ROLE"
    dbtable: "SOURCE_TABLE"

对应的敏感信息可添加到credentials.yml或Databricks环境变量中。

4. Azure AD权限配置(可选,替代密钥)

如果使用Azure AD服务主体而非存储密钥,可在credentials.yml中配置:

azure_blob_ad:
  account_name: "${AZURE_STORAGE_ACCOUNT_NAME}"
  client_id: "${AZURE_CLIENT_ID}"
  client_secret: "${AZURE_CLIENT_SECRET}"
  tenant_id: "${AZURE_TENANT_ID}"

然后在Catalog的数据集配置中添加Spark AD认证参数:

snowflake_to_blob_output:
  type: kedro_datasets.spark.SparkDataSet
  filepath: "wasbs://<your-container>@${AZURE_STORAGE_ACCOUNT_NAME}.blob.core.windows.net/path/to/saved_data.parquet"
  save_args:
    format: parquet
    mode: overwrite
  credentials: azure_blob_ad
  spark_config:
    fs.azure.account.auth.type.your-storage-account.blob.core.windows.net: "OAuth"
    fs.azure.account.oauth.provider.type.your-storage-account.blob.core.windows.net: "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider"
    fs.azure.account.oauth2.client.endpoint.your-storage-account.blob.core.windows.net: "https://login.microsoftonline.com/${AZURE_TENANT_ID}/oauth2/token"

常见排查点

  • 确认Databricks集群的Spark版本与Kedro数据集依赖的Spark版本兼容
  • 检查存储账户密钥/AD主体权限是否包含Blob的写入权限
  • 验证Snowflake连接器版本与Databricks runtime版本匹配

内容的提问来源于stack exchange,提问作者Christianne Rio Ortega

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:47:49