繁体   English   中英

在 DataBrick 平台中为 PySpark API 安装 IsolationForest 的最佳做法是什么?

[英]What is the best practice to install IsolationForest in DataBrick platform for PySpark API?

我正在尝试在 DataBrick 平台上安装 Isolation Forest package。 databrick 中 spark 的版本是 3.1.1:

print (pyspark.__version__) 
#3.1.1

所以我试着按照这篇文章来实现IsolationForest但我无法通过以下步骤从这个repo安装 package:

Step 1. Package spark-iforest jar 部署到spark lib

cd 火花 iforest/

mvn clean package -DskipTests

cp 目标/spark-iforest-.jar $SPARK_HOME/jars/

步骤2. Package pyspark-iforest 并通过pip安装,如果不需要>python pkg请跳过此步骤

cd spark-iforest/python

python setup.py sdist

pip 安装 dist/pyspark-iforest-.tar.gz

所以基本上我运行以下脚本并得到: ModuleNotFoundError: No module named 'pyspark_iforest'

from pyspark import SparkConf
from pyspark.sql import SparkSession, functions as F
from pyspark.ml.feature import VectorAssembler, StandardScaler
from pyspark_iforest.ml.iforest import IForest, IForestModel
import tempfile

conf = SparkConf()
conf.set('spark.jars', '/full/path/to/spark-iforest-2.4.0.jar')

spark = SparkSession \
        .builder \
        .config(conf=conf) \
        .appName("IForestExample") \
        .getOrCreate()

temp_path = tempfile.mkdtemp()
iforest_path = temp_path + "/iforest"
model_path = temp_path + "/iforest_model"

DataBrick平台中为 PySpark 安装IsolationForest的最佳做法是什么?

此特定版本的隔离林是为Spark 2.4 和 Scala 2.11编译的,并且与您正在使用的 Spark 3.1 二进制不兼容。 您可以尝试使用基于 Spark 2.4 - 6.4 或 5.4 的 Databricks Runtime (DBR) 版本。

您可以查看由 Microsoft 开发的mmlspark (Microsoft Machine Learning for Apache Spark)库 - 它具有IsolationForest 的实现,尽管我自己没有使用过它。

使用前需要先导入jar:

from pyspark import SparkConf
from pyspark.sql import SparkSession, functions as F
from pyspark.ml.feature import VectorAssembler, StandardScaler
import tempfile

conf = SparkConf()
conf.set('spark.jars', '/full/path/to/spark-iforest-2.4.0.jar')

spark = SparkSession \
        .builder \
        .config(conf=conf) \
        .appName("IForestExample") \
        .getOrCreate()


from pyspark_iforest.ml.iforest import IForest, IForestModel

temp_path = tempfile.mkdtemp()
iforest_path = temp_path + "/iforest"
model_path = temp_path + "/iforest_model"

我通常在单独的 .py 文件上创建 spark session 或使用spark-submit命令提供spark.jars ,因为加载 jars 的方式有时会在仅将它们添加到代码中时给我带来麻烦。

spark-submit --jars /full/path/to/spark-iforest-2.4.0.jar my_code.py

此外,正如@Alex Ott 提到的那样,版本不匹配,但在那种情况下错误会有所不同。 用 pyspark 3.x 搭建 iForest 不是很难,但如果你不想进去,可以降级 pyspark 版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM