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

Azure Databricks密钥值中美元符号$被移除问题求助

解决Azure Databricks含美元符号密钥注入环境变量丢失问题

问题现象

创建包含美元符号的Azure Databricks密钥(示例值:abc$_a),通过/api/2.0/secrets/put API将其配置为集群环境变量后,Spark作业中读取到的值会丢失美元符号,变为abc_a。尝试改用bytes_value参数存储密钥,结果问题依旧。目前Databricks社区已有同类问题上报,但官方暂未给出正式修复方案。

可行规避方案

  • 直接在代码中读取密钥:跳过环境变量映射环节,在Spark作业代码里通过Databricks工具直接读取密钥值,示例代码:

    # Python示例
    secret_value = dbutils.secrets.get(scope="你的密钥范围", key="你的密钥名称")
    
    // Scala示例
    val secretValue = dbutils.secrets.get(scope = "你的密钥范围", key = "你的密钥名称")
    
  • 编码后传递再解码:如果业务必须通过环境变量传递,可先对密钥值做Base64编码处理,存入密钥后再映射为环境变量,最后在代码中解码还原:

    1. 本地对原始密钥值编码(以Linux/macOS为例):
      echo -n 'abc$_a' | base64
      # 输出结果:YWJjX19h
      
    2. 将编码后的字符串YWJjX19h存入Databricks密钥
    3. 代码中解码还原:
      import os
      import base64
      
      encoded_value = os.environ.get("YOUR_ENV_VAR_NAME")
      original_secret = base64.b64decode(encoded_value).decode("utf-8")
      

问题原因

Databricks在解析集群环境变量时,会将$识别为系统环境变量的引用标记。当密钥中包含$_时,会被解析为引用一个名为_的环境变量(通常该变量不存在,值为空),最终导致$_被替换为空字符串,出现美元符号丢失的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:47:40