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

Azure Databricks共享计算下OneHotEncoder构造器未白名单问题求助

解决方案:Azure Databricks Shared Compute下OneHotEncoder构造函数白名单错误

问题根源

Shared Compute模式下,Databricks的安全策略仅允许调用Spark ML组件的白名单构造函数,直接传入字符串名称的OneHotEncoder(String)构造函数不在白名单范围内,而Personal Compute模式无此安全限制,因此代码在两种环境下表现不一致。

修复步骤

  • 改用无参构造函数创建OneHotEncoder实例,再通过setter方法配置参数(如输入列、输出列),这是Spark ML官方推荐的标准用法,完全符合Shared Compute的安全策略要求。

    错误写法(触发报错):

    from pyspark.ml.feature import OneHotEncoder
    # 直接传字符串名称的构造函数被安全策略拦截
    encoder = OneHotEncoder("encoder_name")
    encoder.setInputCol("category_col").setOutputCol("encoded_col")
    

    正确写法:

    from pyspark.ml.feature import OneHotEncoder
    # 无参构造后通过链式setter配置参数
    encoder = OneHotEncoder() \
        .setInputCol("category_col") \
        .setOutputCol("encoded_col") \
        .setDropLast(True)
    
  • 也可以使用setParams方法批量设置参数,代码更简洁:

    encoder = OneHotEncoder().setParams(
        inputCol="category_col",
        outputCol="encoded_col",
        dropLast=True
    )
    

验证

修改代码后重新在Shared Compute集群上运行,即可绕过构造函数白名单限制,正常执行OneHot编码逻辑,同时解决Personal Compute模式下的列迭代问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:57:03