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

Azure Databricks使用PySpark ML遇Py4J安全错误求解决

解决Azure Databricks中PySpark ML Feature类构造函数白名单错误的方法

问题重现

运行以下PySpark代码时触发Py4J安全异常:

import pyspark.ml.feature
from pyspark.ml.feature import Tokenizer,StopWordsRemover
tokenizer = Tokenizer()

错误信息:

Py4JError: An error occurred while calling 
None.org.apache.spark.ml.feature.Tokenizer. Trace:
py4j.security.Py4JSecurityException: Constructor public 
org.apache.spark.ml.feature.Tokenizer(java.lang.String) is not 
whitelisted.

解决方案

  • 显式指定构造函数参数:Spark ML的特征类设计上推荐明确传入输入输出列参数,同时能绕过白名单限制,直接初始化组件:
    from pyspark.ml.feature import Tokenizer, StopWordsRemover
    
    # 初始化Tokenizer时指定输入输出列
    tokenizer = Tokenizer(inputCol="raw_text", outputCol="tokens")
    # 初始化StopWordsRemover同理
    remover = StopWordsRemover(inputCol="tokens", outputCol="filtered_tokens")
    
  • 调整集群安全白名单配置:若上述方法无效,联系Databricks集群管理员修改spark.py4j.whitelist配置,将需要使用的Spark ML构造函数加入白名单,示例规则:
    org.apache.spark.ml.feature.Tokenizer
    org.apache.spark.ml.feature.StopWordsRemover
    
  • 使用Pipeline API封装组件:将特征处理步骤封装进Pipeline,通过统一的组件声明方式规避构造函数调用的白名单问题:
    from pyspark.ml import Pipeline
    
    tokenizer = Tokenizer(inputCol="raw_text", outputCol="tokens")
    remover = StopWordsRemover(inputCol="tokens", outputCol="filtered_tokens")
    pipeline = Pipeline(stages=[tokenizer, remover])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:32:34