执行display(dbutils.fs.mounts())触发Py4JSecurityException白名单问题求助
问题:执行
display(dbutils.fs.mounts())触发Py4JSecurityException错误 执行代码display(dbutils.fs.mounts())时,抛出核心错误:
py4j.security.Py4JSecurityException: Constructor public com.databricks.backend.daemon.dbutils.FSUtilsParallel(org.apache.spark.SparkContext) is not whitelisted
完整报错堆栈:
Py4JError Traceback (most recent call last) <command-1817294295345329> in <module> ----> 1 display(dbutils.fs.mounts()) /local_disk0/tmp/1684505420167-0/dbutils.py in __getattr__(self, item) 517 jvm_dbutils = sc._jvm.com.databricks.backend.daemon.dbutils 518 fs = self.FSHandler(jvm_dbutils.FSUtils, --> 519 jvm_dbutils.FSUtilsParallel(sc._jsc.sc()), 520 jvm_dbutils.DBUtilsCore(sc._jsc.sc(), 521 self.shell.sqlContext._ssql_ctx), /databricks/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py in __call__(self, *args) 1567 answer = self._gateway_client.send_command(command) 1568 return_value = get_return_value( --> 1569 answer, self._gateway_client, None, self._fqn) 1570 1571 for temp_arg in temp_args: /databricks/spark/python/pyspark/sql/utils.py in deco(*a, **kw) 125 def deco(*a, **kw): 126 try: --> 127 return f(*a, **kw) 128 except py4j.protocol.Py4JJavaError as e: 129 converted = convert_exception(e.java_exception)
附集群配置截图:
可能原因
- 集群启用了Py4J安全白名单限制,
FSUtilsParallel的构造方法未被纳入允许调用的白名单,导致Py4J无法调用该Java构造函数。 - 集群使用的Databricks Runtime版本存在白名单遗漏问题,或自定义了严格的Py4J安全策略。
解决办法
替代API调用:避开并行加载逻辑,直接遍历打印挂载信息,代码如下:
mounts = dbutils.fs.mounts() for mount in mounts: print(mount)添加白名单配置:若有权限修改集群配置,在集群的Spark配置中添加以下参数,重启集群后生效:
spark.databricks.py4j.whitelist com.databricks.backend.daemon.dbutils.FSUtilsParallel升级Runtime版本:若使用旧版Databricks Runtime,该问题可能已在新版本修复,升级到官方稳定LTS版本后重新测试。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

