我使用 pyspark.ml 在 Azure Databricks 上运行 RandomForest。
错误信息:
Py4JError: An error occurred while calling None.org.apache.spark.ml.feature.OneHotEncoder. Trace: py4j.security.Py4JSecurityException: Constructor public org.apache.spark.ml.feature.OneHotEncoder(java.lang.String) is not whitelisted.
运行时:14.3.x-scala2.12
政策:共享计算
访问模式:共享
实例:Standard_D4ads_v5
它与 Databricks 个人计算一起工作正常,但是在 共享计算中出现问题。我只想在个人计算中使用共享计算因为我面临着不同的问题,例如(列不可迭代。)
有什么解决办法吗?
错误:Py4JError:调用时发生错误 无.org.apache.spark.ml.feature.OneHotEncoder。痕迹: py4j.security.Py4JSecurityException:构造函数公共 org.apache.spark.ml.feature.OneHotEncoder(java.lang.String) 不是 已列入白名单。
此问题是由集群模式或访问模式(如高并发、共享、单用户等)与凭据直通设置的特定组合引起的。
由于ERROR与
Py4J
安全限制有关,这可能会限制对共享环境中某些类的访问。
我已经尝试过以下configspark.databricks.pyspark.enablePy4JSecurity false
spark.databricks.pyspark.enableProcessIsolation false
错误详情:
spark.databricks.pyspark.enableProcessIsolation is only allowed when the security mode is Custom or None.
既然您可以在个人计算中使用随机森林作为解决方法,我已经使用
spark.databricks.pyspark.enableProcessIsolation false
尝试了以下方法
在 Spark 配置中使用 NO ISOLATION SHARED 集群。 上述配置适用于
RandomForest
from pyspark.ml.classification import RandomForestClassifier
from pyspark.ml.feature import StringIndexer, VectorAssembler
from pyspark.ml import Pipeline
结果:
+---+--------+-----+-----+----------+
| id|category|value|label|prediction|
+---+--------+-----+-----+----------+
| 0| A| 10| 0.0| 0.0|
| 1| B| 20| 1.0| 1.0|
| 2| A| 30| 0.0| 0.0|
| 3| C| 40| 1.0| 1.0|
| 4| B| 50| 0.0| 0.0|
+---+--------+-----+-----+----------+