求助: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
相关产品推荐
相关产品推荐

